我有两种关注模式,“订单”和“套件”;每个订单has_one :kit
每个“套件”都有一个“成本”值。在控制器中,我希望能够将每个“订单”的成本加起来。
逻辑上我认为这有意义(但它不起作用):
@revenue = Order.Kit.sum(:cost)
任何帮助将不胜感激。感谢。
示例:
用户为套件创建新订单,其成本为20.我希望@revenue的价值为20(反映'销售')。当其他人为同一个套件创建新订单时,@ change应该更改为40。
答案 0 :(得分:1)
假设每个订单没有两个套件......
@revenue = Kit.sum(:cost, :conditions => 'order_id is not null')
用foreign_key替换order_id
答案 1 :(得分:1)
kit_costs = order.kits.map { |k| k.cost }
@revenue = kit_costs.inject(0) { |sum, n| sum += n }
答案 2 :(得分:0)
我猜你让它落后了,每个订单都有一个kit_id。
。 。 。在这种情况下,您只需要给定套件的订单数量,再乘以套件成本:
kit = Kit.find(kit_id)
number_of_orders = Order.count(:all,:conditions=>['kit_id = ?',kit_id])
@revenue = kit.cost*number_of_orders