Ответ 1
Неудачные проверки добавляют к ошибкам записи, поэтому вы можете просто проверить:
return false unless self.errors.empty?
Прямо сейчас, из того, что я знаю, будет вызываться after_validation
, даже если модель не прошла проверку. Есть ли способ вызвать его только в том случае, если модель действительна? Я попытался добавить return false unless self.valid?
в метод after_validation
, но это снова запустит проверку и создает бесконечный цикл.
Неудачные проверки добавляют к ошибкам записи, поэтому вы можете просто проверить:
return false unless self.errors.empty?
Задумывались ли вы об использовании обратного вызова before_save?
Я считаю, что это будет вызываться только в том случае, если объект действителен.
Я знаю, что это старый вопрос, но я столкнулся с той же ошибкой при использовании специальной проверки на модели, которую я создал. Глядя на docs, есть часть, охватывающая пользовательские методы, и она утверждает, что такие проверки вызывается каждый раз при методе .valid?
. Вероятно, почему был вызван бесконечный цикл, когда был вызван обратный вызов :after_validation
.