Я пытаюсь отменить сохранение (изящно) элемента has_many, если оно повторяется. Это то, что я имею в виду:Как отменить сохранение в обратных вызовах before_add?
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
Если он не был бы связан обратный вызов, я мог бы просто вернуться ложным и отменить бы сохранить. Но поскольку это связанный обратный вызов, мне нужно создать исключение, чтобы отменить сохранение, как описано here. Проблема в том, что я не знаю, как изящно излечиться от этого исключения.
Любые идеи ???