我有以下内容:
class ModelA < ApplicationRecord
has_many :model_bs, dependent: :destroy
end
class ModelB < ApplicationRecord
belongs_to :model_a
after_destroy :action_only_if_model_a_exists
private
def action_only_if_model_a_exists
# Do things
end
end
当我调用 model_a.destroy
时,我需要能够在 ModelB 的 action_only_if_model_a_exists
回调中确定关联的 ModelA 是否仍然存在或是否也即将被销毁.
是否有一个很好的内置 Rails 方法来执行此操作,或者我是否需要在较早的回调(例如 before_destroy
)中沿着在 ModelA 中设置标志的路径进行下去,然后我可以检查 ModelB 的回调?
编辑
我已经进行了多次测试并确认在 action_only_if_model_a_exists
回调中,执行以下操作没有帮助:
> model_a.persisted?
true
> model_a.destroyed?
false
> model_a.frozen?
false
最佳答案
您可以在子对象中使用 destroyed_by_association
属性来查看对象是否作为 dependent::destroy
的一部分从其父对象中销毁。
关于ruby-on-rails - Rails - 检查父对象是否被销毁并调用 destroy on dependents,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55369777/