Spec-Zone.ru › Ruby on Rails 8.1

модуль 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, но вместо возврата false вызовет исключение ActiveRecord::RecordInvalid, если запись недействительна.

Вызывает метод суперкласса
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