Railsモデルレコードの配列があります。これらすべてのレコードの関連付けを一度にロードすることは可能ですか(クエリ)?
AR::Scopeの代わりに配列しかない場合があります。また、後で何を熱心にロードするかを動的に選択したい場合もあります。
Railsモデルレコードの配列があります。これらすべてのレコードの関連付けを一度にロードすることは可能ですか(クエリ)?
AR::Scopeの代わりに配列しかない場合があります。また、後で何を熱心にロードするかを動的に選択したい場合もあります。
Rails 3 では、プリローダーを使用して、既存のレコードのアソシエーションを熱心に読み込むことができます。
ActiveRecord::Associations::Preloader.new(posts,:comments).run()
Rails 4.1+ では、呼び出しシグネチャがわずかに変更されました。
ActiveRecord::Associations::Preloader.new.preload(posts,:comments)
さて、あなたはそれらのオブジェクトを再発見することができます。':id'を配列にマッピングして、レコードのIDを取得してから、再検索します。今回は、遅延読み込みを行います。
たとえば、Post
モデルレコードの配列がである場合、次のposts
ようになります。
Post.find(posts.map &:id).includes(:blah)