2009-07-27 18 views
1

我喜欢为rails创建命名作用域。但是,我遇到了一些咸菜。 伊夫使用命名作用域的加入,像这样得到了相当满意:使用ActiveRecord与指定作用域连接多个表

named_scope :foo, :joins => :bar, :conditions => "bar_attribute = 'something'" 

现在假装我有一个表叫巴兹这是包含在酒吧表的外键。我需要这样的事情:

named_scope :foo, :joins => (:bar => :baz), :conditions => "bar.id = baz.bar_id AND baz_attribute = 'something_else'" 

这有多可能?

感谢

回答

3

你并不遥远。这应该为你工作:

named_scope: foo, :joins => {:bar => :baz}, :conditions => "bazes.your_attr = 'something_else'" 

这假定巴兹的复数是bazes。您不需要指定将bar.id连接到bazes.bar_id的条件,它将从连接中推断出来。

+0

非常感谢您的帮助。虐待这个测试并让你知道。 – user94154 2009-07-27 20:37:08

0

也许你可以用has_many :through => ...关系结合做到这一点。

+0

怎么这样?你能详细说一下吗? 感谢您的帮助 – user94154 2009-07-27 16:23:14