19

Railsモデルレコードの配列があります。これらすべてのレコードの関連付けを一度にロードすることは可能ですか(クエリ)?

AR::Scopeの代わりに配列しかない場合があります。また、後で何を熱心にロードするかを動的に選択したい場合もあります。

4

2 に答える 2

34

Rails 3 では、プリローダーを使用して、既存のレコードのアソシエーションを熱心に読み込むことができます。

ActiveRecord::Associations::Preloader.new(posts,:comments).run()

Rails 4.1+ では、呼び出しシグネチャがわずかに変更されました。

ActiveRecord::Associations::Preloader.new.preload(posts,:comments)
于 2013-03-12T09:52:35.613 に答える
1

さて、あなたはそれらのオブジェクトを再発見することができます。':id'を配列にマッピングして、レコードのIDを取得してから、再検索します。今回は、遅延読み込みを行います。

たとえば、Postモデルレコードの配列がである場合、次のpostsようになります。

Post.find(posts.map &:id).includes(:blah)
于 2012-09-24T09:58:41.883 に答える