我有一个简单的购物车系统,我已经为应用程序工作了一段时间,我需要一些帮助,试图找出如何更新连接表中的特定属性(订单和产品之间)。
以下是代码:
def add_product_to_cart
@product = Product.by_client(current_client).first
@order = current_order
unless @order.products.exists? :id => @product.id
@order.products << @product
end
end
我在更新@order.products
...
这就是我想要做的:
@order.products << @product
- &gt;发生这种情况时,我需要更新:price
属性..
无论如何这样做?
答案 0 :(得分:1)
class Order
has_many :products
def price
products.sum(:price)
end
end
就在我的头顶。这是总和参考:
http://ar.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html#M000296
答案 1 :(得分:1)
希望将属性放入连接表可能是缺少模型的标志。您可以通过向其添加主键将联接表提升为模型,例如OrderItem
。然后Order
和Product
中的HABTM关联成为has_many through
关联。新模型将是设置回调的好地方,该回调填充price
属性。它还可以解锁其他好处,例如为项目加上时间戳并使其act_as_list
等等。