我搜索了很多但没有找到有意义的东西,关于我们为什么使用" - >"在查询中:
与关联:
has_many :comments, -> { order('posted_at DESC') }
并在范围内:
scope :active, -> { where state: 'active' }
先谢谢
答案 0 :(得分:2)
->
表示lambda表达式。您必须在范围中使用此方法来防止在以前的Rails版本中出现一种错误,此时在范围内使用的表达式仅在加载类时评估一次。例如:
scope :today, where(date: Date.today)
这适用于Rails 3.x(我不记得,但我也认为在4.0和4.1中)并导致意外行为,因为Date.today
仅在加载类时被评估一次。在prod环境中,这通常意味着today
范围返回的记录date
等于上次部署日期。如果您使用lambda:
scope :today, -> { where(date: Date.today) }
每次调用此范围时,都会评估传递给lambda的块。
答案 1 :(得分:-1)
它被称为lambda表达式。在ruby中搜索lambda函数。
要回答您的问题,在这种情况下,如果要将参数传递给范围,则使用lambda表达式。这不是必需品,因为你可以使用0 arity的lambda函数。