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