Я пытаюсь сделать это
has_many :roles, :before_add => :enforce_unique
def enforce_unique(assoc)
false if exists? assoc
end
из документов:« Если REPE_ADD Callback бросает исключение, объект не добавляется в коллекцию ». Использование ложного выше не мешает добавлению, поэтому я вынужден сделать это:
def enforce_unique(assoc)
raise if exists? assoc
end
таким образом, это правда, что он не добавляется, но он также поднимает исключение, которое должно быть обрабатывается. Не очень полезно для меня здесь. Я бы предпочел, чтобы это повесно себя больше похоже на регулярный ar Callback Free_save, где возвращается false также предотвращает сохранение (или добавить), но не повышает исключение.
в этом случае выше, я Предполагаю бы, что это просто не добавлять доц. Является ли способ сделать это? Я что-то упускаю? Или поднимает исключение единственный вариант здесь?