我想知道在Rails 4中是如何完成以下操作的,或者我只是使用Rails 3的方法来使用lambda,它可以用4传递参数的方式与用3传递参数的方式相同。
我是Rails 3的新手,正在尝试使用一些运行Rails 4的示例。
下面是我的Rails 3代码:
class Person < ActiveRecord::Base
scope :find_lazy, lambda {|id| where(:id => id)}
end
# In console I can call
Person.find_lazy(1)
所以如果这是Rails4的方法就是使用-> {},这是一个λ,对吧,scope :all_lazy, -> { select("*") }
,如果我需要一个参数怎么办。在使用-> {}时,我尝试了一些不同的想法,并在控制台中得到了参数错误。
发布于 2013-05-16 21:03:38
我认为应该是:
scope :find_lazy, -> (id) { where(id: id) }
发布于 2013-08-10 03:36:12
Ruby也没有弃用老的lambda风格,所以如果你觉得使用它更舒服,那就试试吧。
我个人不喜欢stabby lambda的语法,但最终它们可能会成为标准,所以习惯它们并不会有什么坏处。
发布于 2015-11-27 21:03:44
Rails 4,您可以执行以下操作:
scope :find_lazy, -> (id) { where(id: id) }
那是在古老的红宝石里:
:id => id
更好的哈希:
id: id
https://stackoverflow.com/questions/16588077
复制相似问题