使用嵌套控制器执行求和

时间:2010-02-09 23:08:30

标签: ruby-on-rails ruby

我有两种关注模式,“订单”和“套件”;每个订单has_one :kit

每个“套件”都有一个“成本”值。在控制器中,我希望能够将每个“订单”的成本加起来。

逻辑上我认为这有意义(但它不起作用):

@revenue = Order.Kit.sum(:cost) 

任何帮助将不胜感激。感谢。


示例:

用户为套件创建新订单,其成本为20.我希望@revenue的价值为20(反映'销售')。当其他人为同一个套件创建新订单时,@ change应该更改为40。

3 个答案:

答案 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