質問にあるSQLクエリを書き直すには、次のようにする必要があります(ただし、モデルの関係を完全に視覚化するのに苦労しているため、これは少し推測になります):
RagaContextApplicantsSong.
joins(:raga_contest_applicants => [:raga_content_rounds], :contest_cat).
group('raga_contest_rounds.contest_cat_id')
...joins
メソッドは、2つの結合の両方とWHERE
を処理します 句、最後にgroup
が続きます 電話してください。
参考資料として:
同じモデルに複数のアソシエーションを参加させている場合は、簡単にリストできます> :
Post.joins(:category, :comments)
Returns all posts that have a category and at least one comment
ネストされたテーブルを結合している場合は、ハッシュのようにリストできます:
Post.joins(:comments => :guest)
Returns all comments made by a guest
ネストされた関連付け、複数レベル:
Category.joins(:posts => [{:comments => :guest}, :tags])
Returns all posts with their comments where the post has at least one comment made by a guest
次のようにActiveRecordクエリインターフェイス呼び出しを連鎖させることもできます:
Post.joins(:category, :comments)
...produces the same SQL as...
Post.joins(:category).joins(:comments)
他のすべてが失敗した場合は、いつでもSQLフラグメントを直接に渡すことができます。 joins
メソッド
作業中のクエリからよりARQI中心の何かに到達するための足がかりとして
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