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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在rails中销毁之前检查所有关联前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的应用程序中有一个重要的模型,有许多关联.如果我想检查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 => :限制has_many调用的选项:
has_many :models,:dependent => :restrict

这样,如果没有其他关联对象引用它,您将只能销毁该对象.

其他选择是:

>:destroy – 销毁调用其destroy方法的每个关联对象.>:delete_all – 删除每个关联的对象而不调用其destroy方法.>:nullify – 将关联对象的外键设置为NULL,而不调用其保存回调.

原文链接:https://www.f2er.com/ruby/271086.html

猜你在找的Ruby相关文章