Dar*_*evo 8 ruby-on-rails associations
我的应用程序中有一个重要的模型,有许多关联.如果我想检查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
Run Code Online (Sandbox Code Playgroud)
问题是,有没有办法立即执行所有验证?感谢名单!
Mat*_*ira 23
您可以将:dependent => :restrict选项传递给您的has_many电话:
has_many :models, :dependent => :restrict
Run Code Online (Sandbox Code Playgroud)
这样,如果没有其他关联对象引用它,您将只能销毁该对象.
其他选择是:
:destroy- 销毁调用其destroy方法的每个相关对象.:delete_all- 删除每个关联的对象而不调用其destroy方法.:nullify- 设置关联对象的外键,NULL 而不调用其保存回调.