我有一个Campaign
型号的has_many
个项目.
每一件都有:quantity
和:price
我想计算一下这次活动的总价.
我试过了,但没用.
def campaign_subtotal(campaign)
return campaign.items.sum(item.price * item.quantity)
end
如何处理这一问题?
非常感谢
我有一个Campaign
型号的has_many
个项目.
每一件都有:quantity
和:price
我想计算一下这次活动的总价.
我试过了,但没用.
def campaign_subtotal(campaign)
return campaign.items.sum(item.price * item.quantity)
end
如何处理这一问题?
非常感谢
天真的实现是:
class Campaign < ApplicationRecord
has_many :items
def subtotal
items.sum { |item| item.price * item.quantity }
end
end
您有点接近了,但您需要传递一个块来计算每一项的总和.使其成为实例方法而不是帮助器也更有意义.
但是,如果您想要在数据库查询中使用小计,或者想要有效地显示一系列活动,您可能希望在SQL中使用子查询、窗口查询或横向联接来计算小计.您还应该考虑记录每行的价格(小计),而不是一直重新计算它.