У меня есть модель заказа, которая 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
. Это прекрасно работает при первом вводе информации, но если я пытаюсь редактировать заказ, total_price не обновляется, потому что update_total_price
не вызывается, потому что self.saved не равно nil.
Что я могу сделать, чтобы обновление модели обновляло его, но не продолжало выполнять бесконечный цикл вызова .save