gpt4 book ai didi

ruby-on-rails - 在 Rails 中,如何确定记录是否被依赖 : :destroy callback? 破坏

转载 作者:行者123 更新时间:2023-12-04 01:02:29 26 4
gpt4 key购买 nike

我在我的 Rails 应用程序中有一条记录:after_destroy需要知道为什么记录被破坏的钩子(Hook)。更具体地说,如果记录被级联销毁,因为它的父级说 dependent: :destroy ,它需要做的事情与单独销毁记录不同。

我试图做的是看看它的 parent 是否是destroyed? , 才发现 dependent: :destroy回调在父级被销毁之前完成。这是有道理的,因为它应该能够失败。 (即限制)。

那么,我该怎么做呢?

最佳答案

解决方案#1

如果您的模型足够简单并且不需要在子关系中调用任何回调,则可以使用 dependent: delete_all在 parent 。

解决方案#2

对于更复杂的场景,您可以使用 destroyed_by_association ,返回 ActiveRecord::Reflection::HasManyReflection当它是级联的一部分时的对象,否则为 nil:

after_destroy :your_callback

def your_callback
if destroyed_by_association
# this is part of a cascade
else
# isolated deletion
end
end

我刚刚在 Rails 4.2 中尝试过,它可以工作。

来源: https://github.com/rails/rails/issues/12828#issuecomment-28142658

关于ruby-on-rails - 在 Rails 中,如何确定记录是否被依赖 : :destroy callback? 破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21578812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com