如何计算结账的所有值?

时间:2014-07-23 22:11:55

标签: ruby-on-rails ruby

我正在尝试用Ruby做一些简单的数学运算。

我有一个名为job_delivery_costs的模型。用户可以向结账添加多个作业交付成本。

我可以在视图中使用delivery_cost.quantity * delivery_cost.cost_per_unit计算每个单独的作业投放成本,但是我想在最后添加所有投放成本的总和。

我开发了这种方法:

def calculate_delivery_total(array)
    array.map(&:cost_per_unit).inject(0, &:+) * array.map(&:quantity).inject(0, &:+)
  end

但这是不合适的。这就是我想要实现的目标:

cost_per_unit    quantity
22                3.00         =    66
18                2           =     36

total = 102   

3 个答案:

答案 0 :(得分:0)

如果您尝试将每单位成本*数量相加,那么请在一次操作中完成所有操作:

 array.reduce(0) { |total, item| total + item.cost_per_unit * item.quantity }

答案 1 :(得分:0)

您可以使用以下内容:

array.sum { |item| item.cost_per_unit * item.quantity }

答案 2 :(得分:0)

如果你的模型被称为JobDeliveryCost,那么下面只会在一个查询中进行计算,保存因遍历每一行而产生的n + 1以及ActiveRecord创建新对象的开销< / p>

JobDeliveryCost.sum("cost_per_unit * quantity")