Ruby on Rails - after_validation, если он действителен? - PullRequest
16 голосов
/ 04 ноября 2011

Прямо сейчас, насколько я знаю, after_validation будет вызываться, даже если модель не пройдет валидацию. Есть ли способ назвать его, только если модель действительна? Я попытался добавить return false unless self.valid? в методе after_validation, но это снова вызывает проверку и создает бесконечный цикл.

Ответы [ 3 ]

17 голосов
/ 04 ноября 2011

Неудачные проверки добавляют к ошибкам записи, поэтому вы можете просто проверить:

return false unless self.errors.empty?
2 голосов
/ 04 ноября 2011

Задумывались ли вы об использовании обратного вызова before_save?

Я считаю, что он будет вызван, только если объект действителен.

1 голос
/ 07 мая 2016

Я знаю, что это старый вопрос, но я столкнулся с той же ошибкой при использовании пользовательской проверки для модели, которую я создал.Глядя на документы , есть часть, описывающая пользовательские методы, и говорится, что такие проверки вызываются каждый раз, когда .valid? метод.Вероятно, поэтому бесконечный цикл был запущен, когда был вызван обратный вызов :after_validation.

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