加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 19:27:59 所属栏目:百科 来源:网络整理
导读:我的应用程序中有一个重要的模型,有许多关联.如果我想检查before_destroy回调中的所有引用,我必须执行以下操作: has_many :models_1has_many :models_2mas_many :models_3........has_many :models_nbefore_destroy :ensure_not_referenceddef :ensure_not_
我的应用程序中有一个重要的模型,有许多关联.如果我想检查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,而不调用其保存回调.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读