user94154
user94154

Reputation: 16564

Joins across multiple tables with ActiveRecord with named scopes

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

Upvotes: 1

Views: 2351

Answers (2)

Aaron Rustad
Aaron Rustad

Reputation: 2026

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.

Upvotes: 3

alltom
alltom

Reputation: 3252

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

Upvotes: 0

Related Questions