Spec-Zone.ru › Ruby on Rails 7.2

модуль ActiveRecord::Validations

Валидация Active Record

Модуль Active Record включает большинство валидаций из ActiveModel::Validations.

По умолчанию все валидации в Active Record выполняются при сохранении. Validations принимают аргумент :on для определения контекста, в котором валидации активны. Active Record передаёт контекст :create или :update, в зависимости от того, является ли модель new_record? новой.

Публичные методы экземпляров

save(**options) Показать исходный код
# 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 заменяется этим методом, когда модуль валидации смешан, а по умолчанию он так и есть.

Вызывает метод суперкласса
save!(**options) Показать исходный код
# 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.

Вызывает метод суперкласса
valid?(context = nil) Показать исходный код
# 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 выполняются только в указанном контексте.

Вызывает метод суперкласса
Также алиас: validate
validate(context = nil)
Алиас для: valid?

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API