我有两种方法可用于确定是否将某个类应用于页面以显示某些内容已过期且需要注意。
当全新用户注册时,我收到错误:
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?
运算符,那么如果last_contact_done_date
为nil
,我将返回-1。但它似乎不起作用。我应该在last_contact_done_date
中使用哪个运算符,或者如何更改contact_overdue?
方法,以便在没有联系人的情况下,从false
方法返回contact_overdue?
?< / p>
答案 0 :(得分:0)
要在没有上次联系完成日期时返回默认值-1
,请使用
@user.last_contact_done_date || -1
(期望Date.tomorrow
返回-1
是不合理的;))
||=
是一个赋值运算符; a ||= b
相当于a = a || b
;如果a
是一个属性(即以点和实例为前缀,c.a
),对它的赋值将调用方法a=
。因此,您的代码必须使用名为last_contact_done_date=
的方法来处理分配,而不是。