Тихо пропуская добавить с Repe_add Association Callback Поднимая исключение?

Я пытаюсь сделать это

 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 также предотвращает сохранение (или добавить), но не повышает исключение.

в этом случае выше, я Предполагаю бы, что это просто не добавлять доц. Является ли способ сделать это? Я что-то упускаю? Или поднимает исключение единственный вариант здесь?

7
задан pixelearth 1 September 2011 в 17:02
поделиться