例如,使用Rails 3.2 / Ruby 1.9,我有以下类:
class Foo
has_many :bars
end
class Bar
scope :active, where(:active=>true)
# also tried
# scope :active, lambda{where(:active=>true)}
# scope :active, -> {where(:active=>true)}
end
现在,如果我有一个Foo(f)的实例,并且这样做了f.bars
,则可以得到预期的ActiveRecord :: Relation实例。但是由于某种原因f.bars.active
,我得到active
了关系对象的未定义方法(我将购买此对象,因为作用域在Bar
类上)。我f.bars.where(:active=>true)
没问题。我想我的问题是:
您必须先将作用域语句包装在lambda中,然后才能正常工作:
scope :active, -> { where(:active=>true) }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句