在多个表的连接用ActiveRecord与命名范围(Joins across multiple ta

2019-09-21 02:30发布

我喜欢做命名范围的轨道。 然而,我遇到了一个有点咸菜。 香港专业教育学院得到了相当舒适的使用命名作用域的加入,像这样:

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'"

这怎么可能是什么?

谢谢

Answer 1:

你是不是已经不远了。 这应该为你工作:

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

这假定巴兹的复数是bazes。 你并不需要指定联接bar.id到bazes.bar_id的条件下,它会从被推断:连接。



Answer 2:

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



文章来源: Joins across multiple tables with ActiveRecord with named scopes