Ret*_*eti 2 ruby-on-rails infinite-loop
我有一个订单模型has_many :items.每个项目都有item.price所述项目的费用.我想在订单中加上所有商品价格order.total_price.现在我正在这样做
after_save :update_total_price, :if => "self.saved.nil? "
def update_total_price
self.total_price = Item.find(item_ids).inject(0){|sum,item| sum + (item.price * item.amount) } #amount is how many items there are
self.saved = 1
self.save if self.saved
end
Run Code Online (Sandbox Code Playgroud)
这在我第一次输入信息时效果很好,但是如果我尝试编辑顺序,则total_price不会更新,因为update_total_price不会被调用因为self.saved不是nil.
我该怎么做才能让更新模型更新它,但不会继续进行无限循环的调用.save?
为什么不让update_total_price不再保存数据.
只需在before_update中设置值:
before_save :update_total_price
def update_total_price
self.total_price = items.find(:all).inject(0){|sum,item| sum + (item.price * item.amount) }
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1807 次 |
| 最近记录: |