使用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)
没问题。我想我的问题是:
答案 0 :(得分:2)
必须先将范围语句包装在lambda中才能正常工作:
scope :active, -> { where(:active=>true) }