我有一个具有以下关联的用户模型:
has_many :brands, dependent: :destroy, inverse_of: :owner
但是有些用户有一个null master_id字段,我不想在他的品牌协会上调用destroy回调。有可能吗?
我试过了:
user.destroy
user.delete
但我无法跳过他的品牌协会的销毁回调。
答案 0 :(得分:1)
您可以使用dependent: :destroy
回调跳过before_destroy
,如下所示:
# app/models/user.rb
has_many :brands, dependent: :destroy, inverse_of: :owner
before_destroy :prevent_destroy, prepend: true
private
def prevent_destroy
return false if self.master_id.nil?
end
参见Cancelling callbacks的进一步参考。通过上述设置,如果用户的master_id
为nil
,则before_destroy
会返回false
,这会阻止dependent: :destroy
执行。
答案 1 :(得分:1)
只有对Mongoid 4有用的东西是:
counter