модуль ActiveRecord::Validations
Active Record Валидации
Active Record включает большинство своих валидаций из ActiveModel::Validations, все из которых принимают аргумент :on для определения контекста, в котором активны валидации. Active Record всегда предоставляет контекст :create или :update в зависимости от того, является ли модель new_record?.
Открытые методы экземпляра
Процесс валидации при сохранении можно пропустить, передав validate:
false. Регулярный метод #save заменяется этим методом, когда модуль валидации включен, что происходит по умолчанию.
# File activerecord/lib/active_record/validations.rb, line 50
def save(options={})
perform_validations(options) ? super : false
end Попытка сохранить запись так же, как и #save, но при этом будет поднято исключение RecordInvalid вместо возвращения false если запись не валидна.
# File activerecord/lib/active_record/validations.rb, line 56
def save!(options={})
perform_validations(options) ? super : raise(RecordInvalid.new(self))
end Выполняет все валидации в указанном контексте. Возвращает true если ошибок нет, false в противном случае.
Если аргумент равен false (по умолчанию nil), контекст устанавливается в :create если new_record? равно true, и в :update если нет.
Валидации Валидации без опции :on будут выполняться независимо от контекста. Валидации Валидации с опцией :on будут выполняться только в указанном контексте.
# File activerecord/lib/active_record/validations.rb, line 68 def valid?(context = nil) context ||= (new_record? ? :create : :update) output = super(context) errors.empty? && output end
© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.