модуль ActiveRecord::Validations
Валидация Active Record
Active Record включает в себя большинство валидаций из ActiveModel::Validations, все из которых принимают аргумент :on для определения контекста, в котором валидации активны. Active Record всегда предоставляет контекст :create или :update в зависимости от того, является ли модель new_record? новой.
Открытые методы экземпляров
# File activerecord/lib/active_record/validations.rb, line 46 def save(**options) perform_validations(options) ? super : false end
Процесс валидации при сохранении можно пропустить, передав validate: false. Контекст валидации можно изменить, передав context: context. Стандартный метод ActiveRecord::Base#save заменяется на этот, когда модуль валидаций включён, что происходит по умолчанию.
# File activerecord/lib/active_record/validations.rb, line 52 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 66 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?
© 2004–2020 David Heinemeier Hansson
Licensed under the MIT License.