というオーダーモデルがあり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
これは、最初に情報を入力したときは問題なく機能しますが、注文を編集しようとすると、update_total_price
self.saved が nil ではないために呼び出されないため、total_price が更新されません。
モデルを更新すると更新されますが、呼び出しの無限ループを続けないようにするにはどうすればよい.save
ですか?