модуль ActiveRecord::Validations
Валидация Active Record
Модуль Active Record включает большинство валидаций из ActiveModel::Validations.
По умолчанию все валидации в Active Record выполняются при сохранении. Validations принимают аргумент :on для определения контекста, в котором валидации активны. Active Record передаёт контекст :create или :update, в зависимости от того, является ли модель new_record? новой.
Публичные методы экземпляров
# File activerecord/lib/active_record/validations.rb, line 47 def save(**options) perform_validations(options) ? super : false end
Процесс валидации при сохранении можно пропустить, передав validate: false. Контекст валидации можно изменить, передав context: context. Обычный метод ActiveRecord::Base#save заменяется этим методом, когда модуль валидации смешан, а по умолчанию он так и есть.
# File activerecord/lib/active_record/validations.rb, line 53 def save!(**options) perform_validations(options) ? super : raise_validation_error end
Пытается сохранить запись так же, как ActiveRecord::Base#save, но при ошибке валидации вызывает исключение ActiveRecord::RecordInvalid, вместо того чтобы вернуть false.
# File activerecord/lib/active_record/validations.rb, line 69 def valid?(context = nil) context ||= default_validation_context output = super(context) errors.empty? && output end
Выполняет все валидации в заданном контексте. Возвращает true, если ошибок нет, и false, в противном случае.
Алиас метода validate.
Если аргумент false (по умолчанию nil), контекст устанавливается в :create, если new_record? равен true, и в :update в противном случае. Если аргументом является массив контекстов, post.valid?([:create, :update]), валидации выполняются в нескольких контекстах.
Валидации без опции :on выполняются независимо от контекста. Валидации с опцией :on выполняются только в указанном контексте.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.