joins
用途 隣接しているモデルの属性で絞り込みを行うとき。
具体例 あるブログのポストでホゲ君だけがコメントしているポストだけ集めたい。
条件 コメントのデータは扱わない。
SQL文(クエリ)
Post.joins(:comments).each do |post| post.comments.each do |comment| end end
SELECT "posts".* FROM "posts" INNER JOIN "comments" ON "comments"."post_id" = "posts"."id"
Comments Load (0.5ms) SELECT "comments".* FROM "comments" WHERE "comments"."post_id" = ? [["post_id", 1]]
Comments Load (0.5ms) SELECT "comments".* FROM "comments" WHERE "comments"."post_id" = ? [["post_id", 1]]
:
:
:
コメントがあるポスト取得。
しかしコメントは毎回クエリを実行している。(N+1は解決していない。)