Spec-Zone.ru › Ruby on Rails 5.0

модуль ActiveRecord::Validations

Включенные модули:
ActiveModel::Validations

Валидация Active Record

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

Открытые методы экземпляров

save(options={}) Показать исходный код
# File activerecord/lib/active_record/validations.rb, line 43
def save(options={})
  perform_validations(options) ? super : false
end

Процесс валидации при сохранении можно пропустить, передав validate: false. Регулярный метод ActiveRecord::Base#save заменяется этим методом, когда в модуль включены валидации, что по умолчанию происходит.

Вызывает метод суперкласса
save!(options={}) Показать исходный код
# File activerecord/lib/active_record/validations.rb, line 49
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 63
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, если нет.

Валидации без опции :on будут выполняться независимо от контекста. Валидации с опцией :on будут выполняться только в указанном контексте.

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

Защищённые методы экземпляров

default_validation_context() Показать исходный код
# File activerecord/lib/active_record/validations.rb, line 73
def default_validation_context
  new_record? ? :create : :update
end
raise_validation_error() Показать исходный код
# File activerecord/lib/active_record/validations.rb, line 77
def raise_validation_error
  raise(RecordInvalid.new(self))
end

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

Spec-Zone.ru

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