我有一种情况,我希望显示一个链接,如果有人从未创建过一个事件(邀请)或者最后一次邀请超过30天。
但是,这段代码不起作用;
<% if current_user.invites.nil? || ( current_user.invites && (Date.today - current_user.invites.last.created_at) >= 30.days) %>
<% end %>
有人帮助我以一种特别适用于OR选项后的条件的方式重新组织它。
谢谢
答案 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 %>