Ruby on rails 方法返回nil时的NoMethodError
我有两种方法用于确定是否将类应用于页面,以表明某些内容已过期,需要注意 当一个全新用户注册时,我收到一个错误:Ruby on rails 方法返回nil时的NoMethodError,ruby-on-rails,Ruby On Rails,我有两种方法用于确定是否将类应用于页面,以表明某些内容已过期,需要注意 当一个全新用户注册时,我收到一个错误: undefined method `last_contact_done_date=' for #<User:0x6183708> 最后一个联系人日期方法是用户模型中的方法 def last_contact_done_date self.contacts.order('date_done DESC').first.try(:date_done) end
undefined method `last_contact_done_date=' for #<User:0x6183708>
最后一个联系人日期方法是用户
模型中的方法
def last_contact_done_date
self.contacts.order('date_done DESC').first.try(:date_done)
end
我想如果我在
contact\u逾期?
方法中使用|124;=
操作符,那么如果最后一次联系\u done\u date
为nil
,我会返回-1。但这似乎不起作用。在上次联系人完成日期中我应该使用什么运算符,或者我应该如何更改联系人过期日期?
方法,以便在没有联系人的情况下,从联系人过期日期?
方法返回false
,以在没有上次联系人完成日期的情况下返回-1
的默认值,使用
@user.last_contact_done_date || -1
(期望日期明天返回-1
;)是不合理的)
||=
是赋值运算符a | |=b
相当于a=a | | b
;如果a
是一个属性(即前缀是一个点和一个实例,c.a
),对它的赋值将调用方法a=
。因此,您的代码要求您有一个名为last\u contact\u done\u date=
的方法来处理分配,而您没有。最后调用=的方法是什么?我需要知道,这样我才能读得更多,更好地理解它。如果你问的是上次联系\u done\u date=
,那么是属性设置器或属性编写器,而不是属性获取器/读取器。两者统称为属性访问器或属性(前者是Ruby行话,后者更通用)。有点过头了。如果您询问的是| |=
(这实际上不是一个方法),它是增广赋值运算符或复合赋值运算符之一,请阅读此处了解一般概述:。在Ruby中,它被专门称为条件赋值运算符。
def last_contact_done_date
self.contacts.order('date_done DESC').first.try(:date_done)
end
@user.last_contact_done_date || -1