För att skriva om SQL-frågan du har i din fråga, tror jag att den borde se ut så här (även om jag har svårt att helt visualisera dina modellrelationer, så det här är lite gissningar):
RagaContextApplicantsSong.
joins(:raga_contest_applicants => [:raga_content_rounds], :contest_cat).
group('raga_contest_rounds.contest_cat_id')
...så att joins
Metoden tar hand om båda de två kopplingarna såväl som WHERE
sats, följt slutligen av group
ring.
Som mer för referens:
Om du går med i flera föreningar till samma modell kan du helt enkelt lista dem :
Post.joins(:category, :comments)
Returns all posts that have a category and at least one comment
Om du går med i kapslade tabeller kan du lista dem som i en hash:
Post.joins(:comments => :guest)
Returns all comments made by a guest
Kapslade associationer, flera nivåer:
Category.joins(:posts => [{:comments => :guest}, :tags])
Returns all posts with their comments where the post has at least one comment made by a guest
Du kan också koppla ActiveRecord Query Interface-anrop så att:
Post.joins(:category, :comments)
...produces the same SQL as...
Post.joins(:category).joins(:comments)
Om allt annat misslyckas kan du alltid passera ett SQL-fragment direkt till joins
metod
som ett språngbräde för att komma från din arbetsfråga till något mer ARQI-centrerat
Client.joins('LEFT OUTER JOIN addresses ON addresses.client_id = clients.id')
=> SELECT clients.* FROM clients LEFT OUTER JOIN addresses ON addresses.client_id = clients.id