Rails 6 - получить сообщение об ошибке для одного атрибута - PullRequest
0 голосов
/ 30 сентября 2019

Я хочу легко получить сообщение об ошибке, которое будет возвращено для проверки модели без всех хлопот this . Что-то вроде:

Person.errors(name: "")
-> "Name can't be blank"

Person.errors(name: "___")
-> "Name cannot contain underscores"

Почему? Я хочу проверить сообщения об ошибках в своих тестах, и было бы неплохо, если бы я мог легко получить сообщение об ошибке для одного атрибута (или нескольких) на основе предоставленного значения и не создавать объект с ненужными параметрами, а затем запускать valid? или используя строковый литерал, который может измениться позже.

УТОЧНЕНИЕ:

Похоже, есть некоторые вопросы по этому вопросу. Предположим, что модель имеет 3 разных сообщения (или даже только 1), которые могут быть возвращены на основе определенного атрибута username, называемых A, B и C. Я хочу знать точное сообщение, которое будет возвращено на основе входных данных тестового примераЯ даю это. Поэтому, если бы я позвонил User.errors(username: "123"), он вернул бы «Имя пользователя не может содержать цифры». И если я введу User.errors(username: "z"), то будет возвращено «Имя пользователя должно состоять из 5 или более букв» и т. Д.

Основная причина, по которой я хочу, это для проверки в тестах, чтобы убедиться, что возвращаются правильные сообщения об ошибкахбез ввода букв, поэтому assert_equal User.errors(username: "z"), flash[:danger] вместо "Username must be 5 or more letters", flash[:danger]

...