Ruby on rails 4 计算Rails中的订单总数
我试图在Rails的订单模型中计算总计,但遇到了一点麻烦。讨论有帮助,但不太适用于我的情况 基本上,用户可以选择添加到订单中的产品,然后保存为订单产品。我有以下模型(仅提及相关字段): 对项目求和以创建订单总额的最佳方式是什么?显然,你不能只是在订单右边传递一个隐藏的字段,因为有人可以操纵它。我在考虑这样做:Ruby on rails 4 计算Rails中的订单总数,ruby-on-rails-4,Ruby On Rails 4,我试图在Rails的订单模型中计算总计,但遇到了一点麻烦。讨论有帮助,但不太适用于我的情况 基本上,用户可以选择添加到订单中的产品,然后保存为订单产品。我有以下模型(仅提及相关字段): 对项目求和以创建订单总额的最佳方式是什么?显然,你不能只是在订单右边传递一个隐藏的字段,因为有人可以操纵它。我在考虑这样做: class Order has_many :order_products accepts_nested_attributes_for :order_products befor
class Order
has_many :order_products
accepts_nested_attributes_for :order_products
before_save :calc_total
def calc_total
self.total = order_products.product.sum(&:price)
#or should this be order_products.sum(&product.price) or similar?
end
end
但这看起来不像是正确的语法。也许我不能使用“sum”函数,而应该循环查看订单产品并从产品模型中查找价格?当然,这是一种非常常见的情况——我的做法正确吗
此外,考虑到产品价格可能会发生变化,在订购时是否最好也将每个产品的价格存储在订单产品表中?在这种情况下,我是否只需在OrderProduct模型中添加另一个before_save函数,从产品模型中查找当前价格,将其乘以数量并保存为产品总价值
最后,如果一个产品被删除了,当有订单产品引用它时会发生什么?这会引起问题吗?或者,如果我在订购时在order_products表中缓存了必要的产品数据,我是否可以
谢谢 我已经将它与以下内容结合使用,但不确定这是否是最好的方法
def calc_totals
self.total = 0
order_products.each do |op|
self.total += op.product.price * op.qty
op.item_price = op.product.price
op.item_total = op.product.price * op.qty
end
end
def calc_totals
self.total = 0
order_products.each do |op|
self.total += op.product.price * op.qty
op.item_price = op.product.price
op.item_total = op.product.price * op.qty
end
end