2010-10-04 31 views
5

Mam 2 polimorficzne asocjacje, przez które muszę zapytać.Jak połączyć tabele polimorficzne w jednym zapytaniu?

Mam tabelę news_article, która ma polimorficzny związek z drużynami, graczami itp. Te zespoły, gracze itp mają polimorficzny związek ze zdjęciami za pośrednictwem fotografii fototenicznej.

Potrzebuję znaleźć wszystkie artykuły, które mają co najmniej jedno zdjęcie o szerokości 500 pikseli.

Artykuł ten wzór mam has_many: zespoły (poprzez polimorficznych tabeli) oraz w zespołach mam has_many: obrazy (choć inny polimorficzny tabela)

Myślałem, że mogę korzystać z łączy tak

Article.find (: ostatni: dołącza => {: zespoły =>: zdjęcia}: conditions => "photos.aspect_ratio < 1,55 I photos.aspect_ratio> 1,30")

ale to nie działa . Jakieś pomysły?

+0

można zakładać błąd otrzymujesz? – nfm

+0

po prostu się zawiesza. dziennik mówi "pokaż pola" z tabeli artykułów, ale to jest to. – tesserakt

+0

Czy możesz zamieścić swoje modele? –

Odpowiedz

2

Nadzieja jest to Twoja konfiguracja ...

class Article < ActiveRecord::Base 
    has_many :teams 
end 

class Team < ActiveRecord::Base 
    has_many :photos 
end 

class Photo < ActiveRecord::Base 
    belongs_to :teams 
end 

Czy możesz użyć e następujące zapytanie i daj nam znać, czy to działa dla Ciebie?

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

nadzieję, że to pomaga ...

rgds, Sourcebits Zespół

+0

który działał, nie wiem dlaczego ten drugi nie. – tesserakt

+0

W rzeczywistości połączenia również działają. Nie wiem, dlaczego nie było wcześniej ... – tesserakt

2

Jeśli używasz szyny 3 już:

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

Jeśli używasz Rails 2.3.8:

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

nadzieję, że to pomaga ...

Powiązane problemy