如何在销毁父级后更新集合?

时间:2013-03-20 16:30:52

标签: ruby-on-rails activerecord callback

我正在开发一个Rails 3.2.13应用程序,我有两个模型:

class Invoice < ActiveRecord::Base

  has_many :client_invoices, dependent: :nullify

  ...

end

class ClientInvoice < ActiveRecord::Base

  belongs_to :invoice

  ...

end

我想知道是否有办法让ClientInvoices知道他们的父Invoice何时被销毁并调用私有方法来更新他们的状态。

我试图在Invoice的after_destroy回调中执行此操作,方法是循环收集并更改每个ClientInvoice的状态,但该集合在那里已经为空。

实现这一目标的最佳方法是什么?

非常感谢你!

1 个答案:

答案 0 :(得分:0)

before_destroy 将有效。

before_destroy :update_client_invoice_statue

private

def update_client_invoice_statue   
  client_invoices.each do |invoice|
    #... code to update the status of record
  end
end

注意:此before_destroy方法应返回 true 以继续销毁对象。