ActiveRecord的关系与范围
问题描述:
使用Rails 3.2/Ruby 1.9的,比如我有以下类:ActiveRecord的关系与范围
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
现在,如果我有美孚(F)的实例,而我呢f.bars
,我得到一个实例的ActiveRecord ::关系如预期。由于某种原因,虽然当我做f.bars.active
时,我得到了未定义的方法active
关系对象(我会购买这个作为范围在Bar
类)。虽然我可以做f.bars.where(:active=>true)
没问题。我想我的问题是:
- 这里发生了什么?
- 如何使用活动范围来达到所需的结果?
答
,必须用范围陈述在拉姆达前,将正常工作:
scope :active, -> { where(:active=>true) }
+0
我接受这个,因为在句法上这是原始答案的正确答案。 – psulightning 2014-10-08 15:22:53
上面的例子做的工作。我的情况是我的班级有一个错误(默默失败),只有当我做Bar.active时才发现。 – psulightning 2014-10-08 15:22:25