gpt4 book ai didi

ruby-on-rails - 在销毁 rails 之前检查所有关联

转载 作者:行者123 更新时间:2023-12-04 04:53:53 25 4
gpt4 key购买 nike

我的应用程序中有一个重要的模型,具有许多关联。如果我想检查before_destroy回调中的所有引用,则必须执行以下操作:

has_many :models_1
has_many :models_2
mas_many :models_3
....
....
has_many :models_n

before_destroy :ensure_not_referenced

def :ensure_not_referenced
if models_1.empty? and models_2.empty? and models_3.empty? and ... and models_n.empty?
return true
else
return false
errors.add(:base,'Error message')
end
end

问题是,有没有一种方法可以一次执行所有验证?
谢谢!

最佳答案

您可以将:dependent => :restrict选项传递给has_many调用:

has_many :models, :dependent => :restrict

这样,只有在没有其他关联的对象引用该对象的情况下,您才可以销毁该对象。

其他选项是:
  • :destroy -销毁调用其destroy方法的每个关联对象。
  • :delete_all -删除每个关联的对象,而无需调用它们的destroy方法。
  • :nullify -将关联对象的外键设置为NULL ,而不调用其保存回调。
  • 关于ruby-on-rails - 在销毁 rails 之前检查所有关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6301054/

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