2011-08-31 39 views
1

我有一個Shop型號和Product型號。我也有一個StockItem模型加入兩個 - StockItem具有shop_id,product_idquantity屬性。查找所有商店的產品總庫存量

我需要找到股票在所有商店的每個產品的總量和我此刻這樣的方式感覺有點笨重:

quantity = 0 
Product.first.stock_items.collect { |si| quantity += si.quantity } 

任何人都可以提出一個更簡潔的方法請?

回答

1

您可以使用一個數據庫查詢計算所有產品的總數量。

class Product < ActiveRecord::Base 
    has_many :shops, :through => :stock_items 
    has_many :stock_items 
    scope :with_total, :select => '[products].id, [products].name, sum([si].quantity) as total', 
    :joins => "left outer join stock_items [si] on [si].product_id = [products].id", 
    :group => "[products].id, [products].name" 
end 

現在你可以得到這個總:

Product.with_total.first.total 
+0

這很好用,似乎更有效率。謝謝! – Simon

1
Product.first.stock_items.count 
+0

這並不完全符合我一直在尋找 - 將返回其攜帶的產品,而不是數量每一個商店的數量有庫存。 – Simon

相關問題