Ruby 写得更好的if语句

Ruby 写得更好的if语句,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我想编写一个计算if,在以下情况下运行一段代码: 用户从未发出过邀请 或 当用户在30天前发出邀请时 我试过这样的方法,但不起作用 <% if !current_user.invites.any? || (Date.today - current_user.invites.last.created_at.to_date) >= 30.days %> #some code is run here <% end %> =30.days%> #这里运行一

我想编写一个计算if,在以下情况下运行一段代码:

  • 用户从未发出过邀请

  • 当用户在30天前发出邀请时
我试过这样的方法,但不起作用

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

#some code is run here

<%  end %>
=30.days%>
#这里运行一些代码
最好的方法是什么?

您可以这样做:

class User < ActiveRecord::Base

  def has_sent_invite_in_last_month?
    invites.any? && invites.last.created_at > 1.month.ago
  end

end
class用户1.month.ago
结束
结束
然后:


如果用户从来没有发送过邀请,那么他们在上个月也没有发送过邀请,所以这句话涵盖了这两种情况。

您可以这样做:

class User < ActiveRecord::Base

  def has_sent_invite_in_last_month?
    invites.any? && invites.last.created_at > 1.month.ago
  end

end
class用户1.month.ago
结束
结束
然后:



如果用户从来没有发送过邀请,那么他们在上个月也没有发送过邀请,因此此措辞涵盖了这两种情况。

您可以检查在过去30天内是否为该用户创建了任何邀请:

unless current_user.invites.where("created_at >= ?", 30.days.ago).exists? 
  # ...
end

查询可能是
用户
模型中的一种方法。

您可以检查在过去30天内是否为该用户创建了任何邀请:

unless current_user.invites.where("created_at >= ?", 30.days.ago).exists? 
  # ...
end

查询可能是
用户
模型中的一种方法。

是否验证生成的SQL?定义“不工作”。哪部分不起作用?你是如何缩小问题的范围,从而知道实际失败的是什么?你可以在你的
用户
模型中创建一个方法-类似于
上个月是否发送了邀请?
那么它就是
!当前用户。上个月是否发送了邀请?
(这实际上也包括了他从未发送过邀请的情况,如果您仔细考虑的话)请尝试将其包装在括号中。例如
=30.days)%>
是否验证生成的SQL?定义“不工作”。哪部分不起作用?你是如何缩小问题的范围,从而知道实际失败的是什么?你可以在你的
用户
模型中创建一个方法-类似于
上个月是否发送了邀请?
那么它就是
!当前用户。上个月是否发送了邀请?
(这实际上也包括了他从未发送过邀请的情况,如果你仔细想想的话)尝试将其放在括号中。例如
=30.days)%%>
好主意,但是[]的
未定义方法
count=':ActiveRecord::Relation`@user2963716使用您的代码使它更漂亮。应该可以很好地工作:)很好的主意,但是[]的
未定义方法
count=”:ActiveRecord::Relation`@user2963716使用您的代码使它更漂亮。应该可以很好地工作:)