我将每日订单存储在 daily_orders 表中。在该表中,我有total
列和special_kitchen_orders
列(类型:JSON)。
现在,当我在控制台中运行它时:
ap DailyOrder.first.special_kitchen_orders
我得到了这个:
[
[0] {
"name" => "pizza",
"qty" => 1,
"price" => 10
},
[1] {
"name" => "burger",
"qty" => 1,
"price" => 20
},
[2] {
"name" => "cake",
"qty" => 1,
"price" => 30
}
]
我正在考虑使用after_save来计算所有对象价格的总和,但我不知道如何制作它。
在此示例中,total
应为60
(10 + 20 + 30)。
保存记录后如何汇总所有对象的价格并将其放入total
列中after_save
?
注意:ap
来自awesome_print gem。
解决了
看完这篇文章,我才发现了这个想法。感谢 Sergio Tulentsev 把这reduce
件事指给我看。这对我来说是全新的事物。
def total(array)
array.reduce(0) do |sum, num|
sum += num
end
end
total([1,2,3])
# => 6