我有一个包含发票的任务订单。任务订单有一个名为" invoicedAmount"的属性。发票有一个名为" amount"的属性。我试图在每次添加或删除发票时进行回调," invoicedAmount"字段相应更新。现在我能够在运行中进行计算,但现在我想将它保存到数据库中。这是我的发票模型:
class Invoice < ActiveRecord::Base
belongs_to :task_order
validates_presence_of :task_order_id
after_save :update_task_order_invoiced_amount, notice: ':)!'
after_destroy :update_task_order_invoiced_amount
def update_task_order_invoiced_amount
@task_orders = TaskOrder.all
@invoices = Invoice.all
@task_orders.each do |task_order|
task_order.invoicedAmount = task_order.invoices.sum(:amount)
end
end
end
非常感谢任何指导!
答案 0 :(得分:1)
您可能不想重新计算所有TaskOrder
条记录,但只更改了一条记录。所以你的update_task_order_invoiced_amount
应该是这样的:
def update_task_order_invoiced_amount
task_order.invoicedAmount = task_order.invoices.sum(:amount)
task_order.save
end