

環境  
・Rails4.2系  
・mongoid 4系 / 5系どちらも

N+1問題を避けるために、`includes`を利用しているのですが、なぜか2回目以降にその設定が無視されてしまいます。使い方が間違っているのでしょうか？

サンプル：PlanモデルとEyecatchモデルがあり、has_oneな関係です。

[code]

    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回のクエリ発行になる
    
[/code]


CC BY-SA 3.0
2016-08-23T05:37:23.413
28442
2016-08-23T05:37:23.413
14330
question
ruby-on-rails mongodb
mongoidでN+1回避のincludesが、2回目以降の実行時には無視される