3

データベースからオブジェクトを取得するときに不要なラウンドトリップを回避するために、ミキシング:includeとアソシエーションを実現できるかどうか、またその方法を考えていました。:joins

たとえば、次のようなモデル空間がある場合:

 —————                —————             —————
|  A  | 0..1 ————— * |  B  | * ————— 1 |  C  |
 —————                —————             —————

ここでは、ビューに表示するために既知の識別子で A のインスタンスをロードしていますが、B と C もロードしたいと思います (B via:includeと C via :joins)。これはできますか?これまでのところ、私は:includeのみを使用しています。

A.find params[:id], :include => [ { :b => :c } ]

これにより、2 つの追加ラウンドトリップが自然に生成されます (1.、ID による A のフェッチ、2. 関連する B のフェッチ、3. 関連する C のフェッチ)。

4

1 に答える 1

0

Rails 3 を使用しているので、そのようなメソッドを連鎖させることができます。

A.includes(:b).joins(b: :c).find(params[:id])
于 2013-04-10T13:06:21.917 に答える