0

Rails 3.2.13 アプリケーションを開発しており、次の 2 つのモデルがあります。

class Invoice < ActiveRecord::Base

  has_many :client_invoices, dependent: :nullify

  ...

end

class ClientInvoice < ActiveRecord::Base

  belongs_to :invoice

  ...

end

親の Invoice がいつ破棄されたかを ClientInvoices に知らせ、プライベート メソッドを呼び出してステータスを更新する方法があるかどうか疑問に思っていました。

コレクションをループし、各 ClientInvoice のステータスを変更することにより、請求書の after_destroy コールバックでこれを実行しようとしましたが、コレクションはすでに空です。

これを達成するための最良の方法は何ですか?

事前にどうもありがとうございました!

4

1 に答える 1

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を返す必要があります。

于 2013-03-20T19:11:28.610 に答える