Rails 3 モデルが 2 つあり、以下のようProduct
にRoom
定義されています。各ルームには複数の製品を含めることができ、各製品は複数のルームに含めることができます。
class Product < ActiveRecord::Base
#...
has_many :rooms, :through => :product_selection
has_many :product_selection
end
class Room < ActiveRecord::Base
#...
has_many :products, :through => :product_selection
has_many :product_selection
end
class ProductSelection < ActiveRecord::Base
#...
belongs_to :product
belongs_to :room
end
最初の 10 部屋のレコードを返すクエリを作成したいと思いますrooms_controller.rb
。各部屋には、その部屋にプッシュされた製品の数 (各部屋にいくつの製品があるかを調べるため) と合計が含まれます。ルーム内のすべての製品に対して呼び出される Product 内の列cost
(ルーム内のすべての製品の合計コストを取得するため)。クエリを呼び出した後、Room フィールドと一緒に@rooms[i].total_products
and (または同様のもの) を呼び出して、テンプレートで簡単に消化して反復できるようにすることが理想的です。@rooms[i].total_cost
@room.products.count と @room.products.sum(cost) として 10 個の異なる呼び出しを作成し、それぞれをループできることはわかっていますが、もっと効率的な方法が必要です...明らかな何かを見落としています。
ありがとう!!