У меня есть коллекция объектов ActiveRecord. Я хочу иметь возможность запускать все проверки для каждого из этих объектов, не сохраняя их в базе данных. Я просто хочу знать, будут ли они действительны, если бы я сохранил их в базе данных. Другими словами, я по существу хочу заполнить структуру данных errors
для каждого из моих объектов. Есть ли способ сделать это? Или, может быть, я пропустил что-то о жизненном цикле коллекции errors
?
Выполнение валидации ActiveRecord без сохранения
Ответ 1
Вы можете сделать следующее, чтобы проверить, действительно ли модель:
@user = User.new
if @user.valid?
#do things
Если вы хотите узнать, что такое ошибки, вы можете сделать:
@user = User.new
unless @user.valid?
@user.errors.each {|k, v| puts "#{k.capitalize}: #{v}"}
Вызов ".valid?" метод выполняет ваши проверки, помещая все ваши ошибки в объект ActiveRecord:: Errors, к которому можно получить доступ, как в примере выше. Попробуйте примеры в консоли, чтобы почувствовать это, если хотите.
Ответ 2
Запуск метода #valid?
объекта приведет все проверки и заполнит структуру errors
.
dude = Person.new
unless dude.valid?
# Examine errors
end