我有兩個Rails 3模型,Product
和Room
定義如下。每個房間可以有多個產品,每個產品可以在多個房間:構建最高效的Rails 3 has_many:通過查詢
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
我想內rooms_controller.rb
創建一個查詢返回的記錄的第10間客房,併爲每個房間包括一個計數推送到該房間的產品數量(查找每個房間中有多少種產品)以及產品中名爲cost
的列中所有產品的總和(以獲得房間中所有產品的總成本) 。在調用查詢後,理想情況下,我最好能夠與房間字段一起呼叫@rooms[i].total_products
和@rooms[i].total_cost
(或類似的東西),以便可以通過模板輕鬆進行消解和迭代。
我知道我可以創建10個不同的電話,然後通過@ room.products.count和@ room.products.sum(cost)循環每個電話,但必須有一個更有效的方法...並且我有一個感覺我忽略了一些明顯的東西。
謝謝!