如果重复,我正在尝试取消(优雅地)has_many 元素的保存。这就是我的意思:
class AdmininstratorRole < ActiveRecord::Base
has_many :permissions, before_add: :avoid_repetition
def avoid_repetition(permission)
raise "Repeated Permission" if self.permissions.where(klass: permission.klass, action: permission.action).count > 0
end
end
如果它不是关联的回调,我可以只返回 false 并且这将取消保存。但由于是关联的回调,因此我需要引发异常以取消保存,如此处所述。问题是我不知道如何从那个异常中优雅地恢复。
有任何想法吗???