5

J'ai 2 associations polymorphes à travers lesquelles j'ai besoin d'interroger.Comment joindre des tables polymorphes dans une requête?

J'ai une table de news_article qui a une association polymorphe aux équipes, aux joueurs, etc. Ces équipes, joueurs, etc. ont une association polymorphe aux photos par phototenic.

Je dois trouver tous les articles qui ont au moins une image de 500 pixels de large.

Le modèle de l'article J'ai has_many: équipes (à travers la table polymorphes) et dans les équipes j'ai une has_many: photos (si une autre table polymorphes)

Je pensais que je pouvais utiliser rejoint comme ça

Article.find (: dernière,: = rejoint> {: équipes =>: les photos},: conditions => "photos.aspect_ratio < 1,55 ET photos.aspect_ratio> 1,30")

mais il ne fonctionne pas . Des idées?

+0

Pouvez-vous poster l'erreur que vous obtenez? – nfm

+0

il se bloque juste. le journal indique 'Afficher les champs' de la table des articles, mais c'est tout. – tesserakt

+0

Pouvez-vous poster vos modèles? –

Répondre

2

Hope this est votre configuration ...

class Article < ActiveRecord::Base 
    has_many :teams 
end 

class Team < ActiveRecord::Base 
    has_many :photos 
end 

class Photo < ActiveRecord::Base 
    belongs_to :teams 
end 

Pouvez-vous s'il vous plaît utiliser e question suivante et laissez-nous savoir si cela fonctionne pour vous?

Article.find(:last, :include => {:teams => :photos}, :conditions => "photos.aspect_ratio < 1.55 AND photos.aspect_ratio > 1.30") 

... Hope it helps

MFG, Sourcebits équipe

+0

qui a fonctionné, je ne sais pas pourquoi l'autre n'a pas. – tesserakt

+0

En fait, les jointures fonctionnent également. Je ne sais pas pourquoi ce n'était pas plus tôt ... – tesserakt

2

Si vous utilisez Rails 3: déjà

Article.joins(:teams).where(condition).joins(:photos).where(condition) 

Si vous utilisez Rails 2.3.8:

Article.find(:all, :include => {:teams => :photos}, :conditions => [YOUR CONDITIONS]) 

... Hope it helps

Questions connexes