Om de SQL-query die je in je vraag hebt te herschrijven, denk ik dat het als volgt zou moeten zijn (hoewel ik het moeilijk heb om je modelrelaties volledig te visualiseren, dus dit is een beetje giswerk):
RagaContextApplicantsSong.
joins(:raga_contest_applicants => [:raga_content_rounds], :contest_cat).
group('raga_contest_rounds.contest_cat_id')
...zodat de joins
methode zorgt voor zowel de twee joins als de WHERE
clausule, gevolgd door de group
bellen.
Als meer ter referentie:
Als u zich bij meerdere verenigingen aansluit bij hetzelfde model u kunt ze gewoon vermelden :
Post.joins(:category, :comments)
Returns all posts that have a category and at least one comment
Als u zich bij geneste tabellen voegt, kunt u deze weergeven als in een hash:
Post.joins(:comments => :guest)
Returns all comments made by a guest
Geneste associaties, meerdere niveaus:
Category.joins(:posts => [{:comments => :guest}, :tags])
Returns all posts with their comments where the post has at least one comment made by a guest
U kunt ActiveRecord Query Interface-aanroepen ook zo koppelen dat:
Post.joins(:category, :comments)
...produces the same SQL as...
Post.joins(:category).joins(:comments)
Als al het andere faalt, kun je altijd een SQL-fragment direct in de joins
methode
als een opstap om van uw werkvraag naar iets meer ARQI-gericht te gaan
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