我有兩種方法用於確定是否將類應用於頁面以顯示某些內容已過期並需要注意。NoMethodError方法返回時無
我得到一個錯誤,當一個全新的用戶註冊:
undefined method `last_contact_done_date=' for #<User:0x6183708>
,它的引用錯誤是行這樣的:
2: <div class="span3 <%= "overdue" if (signed_in? && contact_overdue?(current_user.id)) %>">
的contact_overdue?
方法是這樣的(在主頁幫手)
def contact_overdue?(user_id)
@user = User.find_by_id(user_id)
return true if (Date.today - (@user.last_contact_done_date ||= Date.tomorrow)) > 6
end
和last_contact_done_date方法是在這User
模型
def last_contact_done_date
self.contacts.order('date_done DESC').first.try(:date_done)
end
我想,如果我用的是||=
運營商在contact_overdue?
方法,那麼我將返回-1,如果last_contact_done_date
是nil
。但它似乎不起作用。我應該在last_contact_done_date
中使用哪個操作員,或者我應該如何更改contact_overdue?
方法,以便如果沒有聯繫人,則從contact_overdue?
方法返回false
?
=最後調用的方法是什麼?我需要知道,所以我可以閱讀更多,並更好地理解它。 – kwh941
如果您詢問'last_contact_done_date =',則屬性設置器或屬性編寫器 - 而不是屬性獲取器/讀取器。兩者統稱爲屬性訪問器或屬性(前者是Ruby語言,後者更通用)。 http://ruby.about.com/od/oo/ss/Using-Attributes.htm有點過分。如果您詢問'|| ='(實際上它不是一種方法),它是增強型或複合賦值運算符之一,請閱讀這裏進行總體概述:http://en.wikipedia.org/wiki/Augmented_assignment。它在Ruby中被特別稱爲條件賦值運算符。 – Amadan