0
現在我正在研究一個具有Event
模型的Rails應用程序,該模型具有Category
模型作爲嵌套屬性。Rails嵌套屬性回調
我的Event
模型有一個state
屬性,如果嵌套類別達到特定數量,則該屬性必須更改爲某個值。
我試圖使用Event
模型中的after_update
回調來執行此操作,但它不起作用。有人有什麼主意嗎?
現在我正在研究一個具有Event
模型的Rails應用程序,該模型具有Category
模型作爲嵌套屬性。Rails嵌套屬性回調
我的Event
模型有一個state
屬性,如果嵌套類別達到特定數量,則該屬性必須更改爲某個值。
我試圖使用Event
模型中的after_update
回調來執行此操作,但它不起作用。有人有什麼主意嗎?
爲什麼它不起作用?可能是因爲它達到了最大遞歸級別。 嘗試是這樣的:
class Event < ActiveRecord::Base
attr_accessor :category_count_state_updated
has_many :categories
accepts_nested_attributes_for :categories
attr_accessible :categories_attributes
after_update :update_state
private
def update_state
unless self.category_count_state_updated
self.state = 'categories_count_reached' if self.categories.count == 5
self.category_count_state_updated = true
self.save
end
end
end
謝謝,但實際測試這個時候,我把一個調試器「update_state」方法內,但它不會停在那裏。不知道爲什麼真的。 如果我在測試中保存事件模型並且沒有使用該方法,那麼它可以工作,但這不是一個好的做法。任何想法? 再次感謝! – 2012-07-16 17:29:41
那麼......這個回調從來沒有被調用過,或者只有當你改變至少一個父模型的字段時纔會調用它?也許嘗試將此回調改爲'after_save',因爲這也可能是您的情況。 – 2012-07-16 21:25:58
好的,我解決了這個問題,但以另一種方式做了。我在嵌套模型中添加了after_update回調。當after_update被執行時,它會通知它的父(事件模型),並且一切都很好。謝謝Maciej! 乾杯, 馬丁 – 2012-07-16 23:33:04