rails回调更新数据库

时间:2014-05-26 00:34:46

标签: ruby-on-rails ruby callback

我有一个包含发票的任务订单。任务订单有一个名为" 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

非常感谢任何指导!

1 个答案:

答案 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