我有一種方法,在創建或銷燬依賴項時更新父類的依賴對象的計數。這通常起作用,但由於某種原因,當父類被第三個類用:dependent =>:destroy刪除時,當count方法被調用時,父類對象會得到一個零錯誤,因此不會被刪除。如果我在這個操作過程中嘗試從count方法提升parent.inspect,它會返回,所以顯然不是零。有什麼想法嗎?after_destroy上的無對象
class DependentObject < ActiveRecord::Base
belongs_to :parent
belongs_to :third_object
after_destroy :count
def count
count = DependentObject.count(:all, :conditions => ['parent_id = ?', self.parent_id])
self.parent.count = count
self.parent.save
end
end
class Parent < ActiveRecord::Base
belongs_to :third_object
has_many :dependent_objects, :dependent => :delete_all
end
class ThirdObject
has_many :parents, :dependent => :destroy
has_many :dependent_objects, :dependent => :destroy
end
編輯:我之所以有:依賴=>父方法DELETE_ALL是我天真地認爲,因爲:DELETE_ALL不觸發:after_destroy當父母被銷燬,只會被調用,它會避免這個問題。查看開發日誌,事實上就是這樣的,因爲它在之前通過'DependentObject Destroy all'並遇到nil錯誤並啓動回滾之前會對所有相關對象表示'DependentObject Delete all'。
這是絕對理想。非常感謝! – Optimate 2009-07-02 20:23:00