我有Shop
模型和Product
模型。我还有StockItem
模型加入了两个 - StockItem
具有shop_id
,product_id
和quantity
属性。
我需要找到所有商店库存中每种产品的总量,而我现在这样做的方式感觉有点笨拙:
quantity = 0
Product.first.stock_items.collect { |si| quantity += si.quantity }
有人可以提出更简洁的方法吗?
答案 0 :(得分:1)
Product.first.stock_items.count
答案 1 :(得分: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