如何在Ruby on Rails中获得验证错误消息?

时间:2019-05-21 12:09:59

标签: ruby-on-rails ruby validation

我目前正在通过OpenClassrooms学习Ruby on Rails,他们正在使用这段代码:

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

当我尝试创建不带名称的对象时,没有任何错误。例如:

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

在相同的示例(不是相同的类)下,OpenClassrooms出现错误,我不知道为什么我没有任何错误

2 个答案:

答案 0 :(得分:2)

错误在验证后添加到对象。调用new时,您没有进行任何验证,因此该对象没有错误。

如果尝试保存并检查错误,将得到所需的内容:

me = Person.new name:""
me.errors.to_hash
=> {}
me = Person.new name:""
me.save
=> false
me.errors.to_hash
=> ActiveModel::Errors...

答案 1 :(得分:1)

在检查错误对象之前调用me.validate。您也可以致电#valid?

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

所有保存方法都在内部调用此#validate方法,例如#save#save!