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