次のようにネストされた熱心なロードでMaintenance_Recordというモデルをロードしています。
Maintenance_Record::find('all', array('include' => array('maintenance_plan' => array('user') ) ) );
ご覧のとおり、Maintenance_PlanとUserを熱心にロードしています。ユーザーはMaintenance_Plan内にネストされています。ビューでMaintenance_RecordモデルのUserモデルを使用したいと考えています。ビューの 1 つに次のようなループがあります。
foreach( $records as $record )
echo $record->maintenance_plan->user->first_name;
ただし、SQL を見ると、activerecord は呼び出しごとに各Userモデルをループ内でロードしているため、N+1 回の呼び出しが発生します。
Maintenance_Recordモデルを var_dump すると、 Maintenance_PlanとUserが正しく読み込まれます。問題は、N+1 クエリを発生させずに、ネストされた熱心にロードされたモデルにアクセスするにはどうすればよいかということです。