1

我喜欢为 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'"

这怎么可能?

谢谢

4

2 回答 2

3

你离得并不远。这应该适合你:

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

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

于 2009-07-27T16:53:45.730 回答
0

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

于 2009-07-27T16:19:33.053 回答