В настоящее время я изучаю Ruby on rails с помощью OpenClassrooms, и они используют этот фрагмент кода:
validates :name, presence: {
message: "Give a name"
}
Когда я пытаюсь создать объект без имени, я не получаю никакой ошибки. Например :
me = Person.new name:""
me.errors.to_hash
=> {}
В том же примере (только в разных классах) OpenClassrooms получает ошибку, и я не знаю, почему я не получаю никаких ошибок.
Вызовите me.validate
перед проверкой объекта ошибки. Вы также можете вызвать #valid?
.
me = Person.new name: ""
me.validate
me.errors.to_hash
=> { ... }
Все методы сохранения вызывают этот метод #validate
внутри, например #save
и #save!
.
Ошибки добавляются к объекту после проверки. Когда вы вызываете new
, вы ничего не проверяете, поэтому объект не содержит ошибок.
Если вы попытаетесь сохранить его, а затем проверите ошибки, вы получите то, что ищете:
me = Person.new name:""
me.errors.to_hash
=> {}
me = Person.new name:""
me.save
=> false
me.errors.to_hash
=> ActiveModel::Errors...
Это было решение, спасибо! OpenClassrooms не упомянул об этом (по крайней мере, на моем языке)