Почему я не могу проверить проверки ActiveRecord в консоли? - PullRequest
6 голосов
/ 11 февраля 2012

Я изучаю RoR в данный момент, и я думаю, что я что-то неправильно понимаю.

У меня есть вызов класса ActiveRecord User с простыми проверками: name и: email, такими как присутствие: true, длина: {максимум: 15} и т. Д. Я подумал, что проверю проверки в консоли,Я захожу в консоль rails (разработка env) и создаю новый экземпляр с слишком длинным именем, например user_instance = User.new (name: "aaaaabbbbbcccccddddd", email: "").

Проверка не выдает никаких ошибок.Когда я пробую user_instance.save, запись не будет записываться в БД, поэтому на этом этапе она, очевидно, работает нормально.Что я делаю не так?

Ответы [ 2 ]

13 голосов
/ 11 февраля 2012

Если вы хотите получить исключение при сохранении записи, используйте save! вместо save (то же самое с update / update!, create/create!).

С save вы не получите исключение, если есть ошибки проверки, он просто вернет false.Вы также можете проверить наличие ошибок в экземпляре с помощью user_instance.valid? и получить ошибки с помощью user_instance.errors.

См. Когда происходит проверка? .

5 голосов
/ 11 февраля 2012

проверка не выдаст ошибки, если вы попытаетесь установить недопустимые данные для вашей модели, однако сохранение не удастся.

, если вы хотите проверить, работает ли проверка корректно, просто отметьте user.valid? и он должен возвращать false

после вызова valid? , вы можете проверить user.errors для конкретных ошибок, установленных в вашей модели.

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