2016-10-01 14 views
0

投稿のモデルIDをコメントIDと一致させるためにテーブルを結合しようとしています。コメントmodel.commentモデルは投稿モデルに属しています。コントローラの私のアクティブレコードクエリは次のとおりです。複数の関連付けをレールで結合する

Post.joins(:comments) 

それはこの

SELECT "posts".* FROM "posts" INNER JOIN "comments" ON "comments"."post_id" = "post"."id" 

のようなクエリを生成するが、私は

SELECT * FROM "posts" INNER JOIN "comments" ON "comments"."post_id" = "post"."id"  

答えて

1
以下のようなクエリを生成することができ、私はcomments.Howを選択することはできませんよ

投稿と一緒にコメントデータを取得する場合は、.joinsの代わりに.includesを使用する必要があります。

Post.includes(:comments) 

当然ながら、上記はいくつかの投稿を返すので、データベースに別のヒットをせずに関係からコメントを得ることができます。

vs joinを含む素晴らしい記事がhereです。

+0

@dinnesh質問を解決するにはこの回答が十分であれば、それを受け入れることを検討してください。 –

+0

いいえ、Alexはこのようなクエリを生成しますSELECT "posts"。* FROM "posts" SELECT "comments"。* FROM "comments" WHERE "comments"。 "post_id" IN(1、2、3) SELECT "posts"と同じです。* FROM "posts"コメント列はロードされていません。 –

+0

投稿によってコメントを読み込むことができます。 'Post.includes(:comments).first.comments'は最初の投稿のコメントを出力します。 –

関連する問題