Хук after_validation вызывается каждый раз в Active Record? - PullRequest
15 голосов
/ 27 октября 2010

Вызывается ли after_validation хук каждый раз, даже если проверка не пройдена? Я попробовал пару тестов, и это похоже на это!

1 Ответ

38 голосов
/ 27 октября 2010

Вы правы, ошибка проверки по-прежнему вызывает обратный вызов after_validation.Это порядок обратных вызовов:

  1. before_validation
  2. after_validation
  3. before_save
  4. before_create
  5. after_create
  6. after_save
  7. after_commit

Кроме того, чтобы понять большую цепь событий: в документации сказано, что обратный вызов «before», который возвращает false, остановит цепочку и остановит действие (сохранение, создание, обновление и т. д.).Обратный вызов «after», который возвращает false, остановит цепочку обратных вызовов, но не все действие.

«after_validation» - это последнее, что нужно выполнить, если проверки не пройдены, и там все останавливается.Однако, если они проходят, все остальное оборачивается транзакцией базы данных и откатывается, если что-то идет не так.Так что ваш before_create может, например, создать дочерний объект, и он будет безопасно отменен, если создание самого объекта завершится неудачей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...