2013-03-20 46 views
0

我正在開發一個Rails應用程序3.2.13和我有兩個型號:如何在父銷燬後更新集合?

class Invoice < ActiveRecord::Base 

    has_many :client_invoices, dependent: :nullify 

    ... 

end 

class ClientInvoice < ActiveRecord::Base 

    belongs_to :invoice 

    ... 

end 

我想知道如果有一種方法可以讓ClientInvoices知道,當他們的父母發票被破壞,並呼籲私人方法來更新他們的狀態。

我試圖在發票的after_destroy回調中執行此操作,方法是循環集合並更改每個ClientInvoice的狀態,但集合已在此處爲空。

達到此目的的最佳方法是什麼?

非常感謝您提前!

+2

about_destroy怎麼樣? – apneadiving 2013-03-20 16:33:52

+0

感謝@apneadiving您的回覆,但在around_destroy中client_invoices集合是空的,所以我無法循環它們...爲什麼會這樣呢? – bigardone 2013-03-20 17:18:49

+0

在銷燬之前獲取集合,在 – apneadiving 2013-03-20 20:00:11

回答

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方法應該用於轉移對象的破壞返回真正

+0

之後循環它感謝您的迴應!我會盡快試一試 – bigardone 2013-04-03 11:50:40

+0

它適合你嗎? – 2013-04-04 08:38:09

+0

嗨!對不起,我還沒有機會測試它。只要我完成了一些待完成的工作,它就在我的待辦事項列表中。再次感謝! – bigardone 2013-04-17 11:21:07