2010-10-04 22 views
5

Ho 2 associazioni polimorfiche attraverso le quali ho bisogno di interrogare.Come unire le tabelle polimorfiche in una query?

Ho una tabella news_article che ha un'associazione polimorfica a squadre, giocatori, ecc. Quelle squadre, giocatori, ecc. Hanno un'associazione polimorfica alle foto attraverso fototeniche.

Devo trovare tutti gli articoli con almeno una foto larga 500 px.

Il modello articolo Ho un has_many: squadre (attraverso la tabella polimorfica) e nelle squadre che hanno un has_many: foto (anche se un altro tavolo polimorfica)

ho pensato che avrei potuto usare si unisce in questo modo

Article.find (: ultima,: unisce => {: Squadre =>: foto},: condizioni => "photos.aspect_ratio < 1,55 e photos.aspect_ratio> 1.30")

ma non funziona . Qualche idea?

+0

di poter postare l'errore hai trovato? – nfm

+0

si blocca. il registro dice "mostra campi" dalla tabella degli articoli, ma è così. – tesserakt

+0

Puoi pubblicare i tuoi modelli? –

risposta

2

Spero che questo è l'impostazione ...

class Article < ActiveRecord::Base 
    has_many :teams 
end 

class Team < ActiveRecord::Base 
    has_many :photos 
end 

class Photo < ActiveRecord::Base 
    belongs_to :teams 
end 

Potete per favore utilizzare th e seguente domanda e facci sapere se funziona per te?

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

Speranza che aiuta ...

rgds, Sourcebits team

+0

che ha funzionato, non so perché l'altro no. – tesserakt

+0

In realtà, anche i join funzionano. Non so perché non fosse prima ... – tesserakt

2

Se si utilizza Rails 3 già:

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

Se si utilizza Rails 2.3.8:

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

Speranza che aiuta ...

Problemi correlati