Как получить сообщения об ошибках валидации в Ruby on rails? - PullRequest
1 голос
/ 21 мая 2019

В настоящее время я изучаю Ruby на рельсах с OpenClassrooms, и они используют этот кусок кода:

validates :name, presence: {
    message: "Give a name"
}

Когда я пытаюсь создать объект без имени, я не получаю никакой ошибки. Например:

me = Person.new name:""
me.errors.to_hash
=> {}

В том же примере (но не в тех же классах) OpenClassrooms выдают ошибку, и я не знаю, почему я не получаю никакой ошибки

Ответы [ 2 ]

2 голосов
/ 21 мая 2019

Ошибки добавляются к объекту после проверки.Когда вы вызываете new, вы ничего не проверяете, поэтому у объекта нет ошибок.

Если вы попытаетесь сохранить его, а затем проверить ошибки, вы получите то, что искали:

me = Person.new name:""
me.errors.to_hash
=> {}
me = Person.new name:""
me.save
=> false
me.errors.to_hash
=> ActiveModel::Errors...
1 голос
/ 21 мая 2019

Вызовите me.validate перед проверкой объекта ошибки.Вы также можете вызвать #valid?.

me = Person.new name: ""
me.validate
me.errors.to_hash
=> { ... }

Все методы сохранения вызывают этот метод #validate для внутреннего использования, например #save и #save!.

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