我试图做到这一点默默跳过添加before_add关联回调,而不是引发异常?
has_many :roles, :before_add => :enforce_unique
def enforce_unique(assoc)
false if exists? assoc
end
从文档:“如果一个before_add回调抛出一个异常,对象不会被添加到集合”。在使用上述虚假不阻止补充,所以我不得不这样做:
def enforce_unique(assoc)
raise if exists? assoc
end
这样一来,这是真的,它不会增加,但同时也提出了一个必须处理的异常。这里对我不太有用。我更喜欢这种行为更像普通的AR回调before_save,其中返回FALSE也阻止保存(或添加),但不会引发异常。
在上面的例子中,我宁愿这样做只是不会默默地添加关联。有没有办法做到这一点?我错过了什么?或者在这里提出一个例外唯一的选择?