LoginSignup
1
0

More than 5 years have passed since last update.

joins雑メモ

Last updated at Posted at 2018-06-09

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は解決していない。)

参考
http://blog.scoutapp.com/articles/2017/01/24/activerecord-includes-vs-joins-vs-preload-vs-eager_load-when-and-where

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0