0

我有两种方法用于确定是否将类应用于页面以显示某些内容已过期并且需要注意。

新用户注册时出现错误:

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

User模型中的 last_contact_done_date 方法就是这个

  def last_contact_done_date
      self.contacts.order('date_done DESC').first.try(:date_done)
  end

我认为如果我||=在方法中使用运算符,那么如果is contact_overdue?,我会返回 -1 。但它似乎不起作用。我应该使用什么运算符,或者我应该如何更改方法,以便如果没有联系人,则从方法返回?last_contact_done_datenillast_contact_done_datecontact_overdue?falsecontact_overdue?

4

1 回答 1

0

-1要返回没有最后一次联系完成日期的默认值,请使用

@user.last_contact_done_date || -1

(期望Date.tomorrow返回是不合理的-1;))

||=是赋值运算符;a ||= b相当于a = a || b; 如果a是一个属性(即以点和实例为前缀c.a),对其赋值将调用方法a=。因此,您的代码需要您有一个名为last_contact_done_date=处理分配的方法,而您没有。

于 2012-11-22T01:19:30.577 回答