未定义的方法`created_at'为零:NilClass

时间:2014-03-22 22:37:34

标签: ruby-on-rails ruby ruby-on-rails-3

我有一种情况,我希望显示一个链接,如果有人从未创建过一个事件(邀请)或者最后一次邀请超过30天。

但是,这段代码不起作用;

<% if current_user.invites.nil? || ( current_user.invites && (Date.today - current_user.invites.last.created_at) >= 30.days) %> 

<% end %>

有人帮助我以一种特别适用于OR选项后的条件的方式重新组织它。

谢谢

1 个答案:

答案 0 :(得分:2)

由于current_user.invites返回一个数组,所以不应该使用.nil?,因为没有项目的数组不是nil为空,所以{{1}如果没有项目,则数组将为空(invites),因此您可以使用#empty?

此外,我删除了第二个条件,因为无需检查[]是否为空。换句话说,如果invites数组为空,则不会评估OR(invites)条件的右侧。

||

我还建议您在custom helper method中提取此代码,这样您的代码就会更加干净。

<% if current_user.invites.empty? || (Date.today - current_user.invites.last.created_at) >= 30.days %> 

<% end %>