西小倉事典
mindia › 西小倉事典 › 単語

ActiveRecordのincludesメソッド

西小倉パンデイロ · 2013-09-17 更新 · 履歴(2)
第 1 版(2013-09-17 23:22:21 · 西小倉パンデイロ)を表示しています。 最新版に戻る

Parentモデルにbelongs_toしてるChildモデルがあったとして

Child.where(cond).limit(10).each{|hoge|hoge.parent}

とすると

 SELECT * FROM `parents` where... limit 1

みたいなSQLが10回実行されてしまう。
これにincludeを使って

Child.where(cond).limit(10).includes(:parent)each{|hoge|hoge.parent}

とするだけで

SELECT * FROM `parents` WHERE `user`.`id` IN ([親のidコンマ区切り])

という1つのSQLに集約される

履歴

タグ