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,而不调用其保存回调. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |