我沒有用changes
的方法。但我敢肯定,你總是可以用魔術方法<attribute_name>_changed?
和<attribute_name>_was
:
services.any? {|s| s.attribute_name_changed?}
services.map(&:attribute_name_was)
見瑞恩·貝茨的railscast瞭解更多信息:#109 episode
UPDATE:你可以通過:after_delete
和:after_add
回調has_many
直接關聯:
has_many :items, :after_add => :my_method_or_proc1, :after_remove => :my_method_or_proc2
Be car充分利用這些回調並注意它們的工作方式。他們 被稱爲items.build
和items.create
一旦。所以,如果你 items.build
然後保存父對象(嵌套屬性爲 例如)after_add
回調將建設 關聯對象只能調用一次。這意味着,如果父母有驗證,那麼內置的items
將不會保存在數據庫中,您不能依靠after_add
回調。換句話說,它並沒有說在數據庫中保存了添加的關聯記錄。因此,您必須保證該物品僅在呼叫items.create
上添加和保存。我希望你瞭解這個澄清。
對我來說,這隻適用於,如果關聯的對象更新。如果添加或刪除了關聯的對象,它就不適用於我(因爲它不再存在於「服務」關聯中)。我究竟做錯了什麼? – morgler 2017-03-15 14:13:35