Вы путаетесь между проверками и обратными вызовами.
Валидации должны провалиться, если в объекте есть какие-либо ошибки, независимо от того, что возвращает валидация. Обратные вызовы не выполняются, если они возвращают false, независимо от того, добавляют ли они какие-либо ошибки к объекту.
Rails использует допустимые вызовы? от сохранения звонков, который не проверяет результат каких-либо проверок.
Редактировать: Rails рассматривает validate :method
как обратный вызов, но допустимо? до сих пор не проверяет их результаты, только на наличие ошибок, добавленных в объект.
Я не думаю, что это поведение вообще изменилось, но я могу ошибаться. Я не думаю, что когда-либо писал валидацию, чтобы вернуть false раньше.