Когда объект возвращает false для `.valid?`, Есть ли способ выяснить, почему? - PullRequest
0 голосов
/ 24 января 2012

Когда объект возвращает false для .valid?, есть ли способ выяснить, почему?

CardSignup.new(params[:card_signup]).valid?
=> false

Звучит здорово, Рельсы .. но почему?

В некотором роде, но вот пример. Я делаю это:

@card_signup.update_attributes("email"=>"asdfa@asfa.com")
=> false

Но если я сделаю это:

@card_signup.update_attribute("email", "asdfa@asfa.com")
=> true

Почему это работает, когда я обновляю отдельный атрибут, а не update_attributes?

Ответы [ 3 ]

5 голосов
/ 24 января 2012

Вы должны проверить коллекцию @card_signup.errors.

Для вашего второго вопроса метод update_attribute сохраняет запись без процедуры проверки. Напротив, update_attributes выполняет проверки.

1 голос
/ 24 января 2012

Обновления отдельных атрибутов не проходят процесс проверки.

Если созданный объект ActiveRecord недопустим, попробуйте обратиться к методу errors.

* 1006 Е.Г. *

c = CardSignup.new(params[:card_signup])
puts c.errors.to_a.inspect if !c.valid?
0 голосов
/ 24 января 2012

Да, есть метод @card_signup.errors.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...