How to join across polymorphic tables in one query?
I have 2 polymorphic associations through which I need to query.
I have a news_article table which has a polymorphic association to teams, play开发者_如何学Cers, etc. Those teams, players, etc have a polymorphic association to photos through phototenic.
I need to find all articles that have at least one picture that is 500px wide.
The Article model I have a has_many :teams (through the polymorphic table) and in the teams I have a has_many :photos (though another polymorphic table)
I thought that I could use joins like this
Article.find(:last, :joins => {:teams => :photos}, :conditions => "photos.aspect_ratio < 1.55 AND photos.aspect_ratio > 1.30")
but it is not working. Any ideas?
Hope this is your setup...
class Article < ActiveRecord::Base
has_many :teams
end
class Team < ActiveRecord::Base
has_many :photos
end
class Photo < ActiveRecord::Base
belongs_to :teams
end
Can you please use the following query and let us know if it works for you?
Article.find(:last, :include => {:teams => :photos}, :conditions => "photos.aspect_ratio < 1.55 AND photos.aspect_ratio > 1.30")
Hope It helps...
rgds, Sourcebits Team
If you are using Rails 3 already:
Article.joins(:teams).where(condition).joins(:photos).where(condition)
If you are using Rails 2.3.8:
Article.find(:all, :include => {:teams => :photos}, :conditions => [YOUR CONDITIONS])
Hope It helps...
精彩评论