活动模型 - 基于子属性设置父对象的属性

时间:2015-09-24 04:39:14

标签: ruby ruby-on-rails-4 model

我有两个这样的模型

class Cart < ActiveRecord::Base
  has_many :books
  accepts_nested_attributes_for :books, allow_destroy: true

class Book < ActiveRecord::Base
  belongs_to :cart

在购物车数据库中,我有一个总价格列,对于每本书我都有价格。

当我为每本书设定价格时,如何自动更新购物车的总价?

感谢。

1 个答案:

答案 0 :(得分:1)

如果您仅在将Book添加到购物车时创建class Book < ActiveRecord::Base belongs_to :cart after_initialize :update_cart_total private def update_cart_total self.cart.total_price += price self.cart.save end end 的实例,则可以

update_cart_total

每当创建Book的实例时,这将调用 var changed = false if property1 != obj.property1 { property1 = obj.property1 changed = true } if property2 != obj.property2 { property2 = obj.property2 changed = true } ... until property n return changed 方法。