модуль 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 48 def save(**options) perform_validations(options) ? super : false end
Процесс валидации при сохранении можно пропустить, передав validate: false. Контекст валидации можно изменить, передав context: context. Регулярный метод ActiveRecord::Base#save заменяется этим, когда модуль валидаций включен, что происходит по умолчанию.
# File activerecord/lib/active_record/validations.rb, line 54 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 70 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 будут выполняться только в указанном контексте.
ActiveModel::Validations#valid?
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.