1

我有一个简单的购物车系统,我已经为一个应用程序工作了一段时间,并且在尝试弄清楚如何更新连接表(订单和产品之间)中的特定属性时需要一些帮助。

这是代码:

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-> 发生这种情况时,我需要更新一个:price属性..

无论如何要这样做?

4

2 回答 2

1
class Order
  has_many :products
  def price
    products.sum(:price)
  end
end

就在我的头上。这是总和参考:

http://ar.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html#M000296

于 2012-08-23T18:01:07.563 回答
1

希望将属性放入连接表可能是缺少模型的标志。OrderItem您可以通过向其添加主键来将连接表提升为模型。HABTM 中的关联OrderProduct然后成为has_many through关联。新模型将是设置填充price属性的回调的好地方。它还可以解锁额外的好处,比如时间戳物品和制作它们act_as_list等。

于 2012-08-23T18:58:37.443 回答