Joins across multiple tables with ActiveRecord wit

2019-05-30 04:06发布

I love making named scopes for rails. however, I ran into somewhat of a pickle. Ive gotten pretty comfortable using named scopes for joins like so:

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

Now pretend I have a table called baz which is contains a foreign key from the bar table. I need something like this:

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

How possible is this?

thanks

2条回答
可以哭但决不认输i
2楼-- · 2019-05-30 04:20

You are not that far off. This should work for you:

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

This assumes that the plural of baz is bazes. You don't need to specify the condition that joins bar.id to bazes.bar_id, it will be inferred from :joins.

查看更多
Viruses.
3楼-- · 2019-05-30 04:37

Maybe you can do this in combination with a has_many :through => ... relation.

查看更多
登录 后发表回答