Выполнение проверок ActiveRecord без сохранения - PullRequest
11 голосов
/ 31 июля 2009

У меня есть коллекция объектов ActiveRecord. Я хочу иметь возможность запускать все проверки для каждого из этих объектов без фактического сохранения их в базе данных. Я просто хочу знать, будут ли они действительными, если я сохраню их в базе данных. Другими словами, я хочу заполнить структуру данных errors для каждого из моих объектов. Есть ли способ сделать это? Или, может быть, я что-то упускаю из жизненного цикла коллекции errors?

Ответы [ 2 ]

25 голосов
/ 31 июля 2009

Вы можете сделать следующее, чтобы проверить, действительна ли модель:

@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, к которому можно получить доступ, как я делал в примере выше. Попробуйте примеры в консоли, чтобы почувствовать их, если хотите.

3 голосов
/ 31 июля 2009

Запуск метода #valid? на объекте запустит все проверки и заполнит структуру errors.

dude = Person.new
unless dude.valid?
  # Examine errors
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...