mongoidでN+1回避のincludesが、2回目以降の実行時には無視される
環境
・Rails4.2系
・mongoid 4系 / 5系どちらも
N+1問題を避けるために、includes
を利用しているのですが、なぜか2回目以降にその設定が無視されてしまいます。使い方が間違っているのでしょうか?
サンプル:PlanモデルとEyecatchモデルがあり、has_oneな関係です。
class Plan
include Mongoid::Document
include Mongoid::Timestamps
has_one :eyecatch
field :title, type: String
end
class Eyecatch
include Mongoid::Document
include Mongoid::Timestamps
belongs_to :plan
field :name, type: String
end
plans = Plan.includes(:eyecatch)
plans.each{|p| p p.eyecatch.name } # これは2回のクエリ発行で済む
plans.each{|p| p p.eyecatch.name } # 再度実行すると、N+1回のクエリ発行になる