以下是代码:
class SomeParent < ActiveRecord::Base
has_one :some_child, dependent: :destroy
def destroy
self.update_attributes(deleted_at: Time.now)
end
def deleted?
deleted_at.present?
end
end
有人可以解释原因吗?此外,通常有一种更优选的方式来处理这个问题吗?
答案 0 :(得分:1)
重写destroy方法时,callback applied to the original definition未应用于重写方法。一个简单的解决方法是使用所需的回调包装代码,如下所示:
def destroy
run_callbacks :destroy do
self.update_attributes deleted_at: Time.now
end
end
答案 1 :(得分:0)
原因是上面的代码覆盖了ActiveRecord :: Base.destroy(),它负责所有的依赖。