使用带有命名范围的ActiveRecord连接多个表

时间:2009-07-27 16:10:16

标签: ruby-on-rails activerecord named-scope

我喜欢为rails制作命名范围。然而,我遇到了一些泡菜。 我非常适合使用命名范围进行连接:

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

现在假装我有一个名为baz的表,它包含bar表中的外键。我需要这样的东西:

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

这有多可能?

谢谢

2 个答案:

答案 0 :(得分:3)

你并不遥远。这应该适合你:

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

这假设baz的复数是bazes。您不需要指定将bar.id连接到bazes.bar_id的条件,它将从以下推断:连接。

答案 1 :(得分:0)

也许你可以与has_many :through => ...关系结合使用。