модуль 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 будут выполняться только в указанном контексте.
© 2004–2019 David Heinemeier Hansson
Licensed under the MIT License.