我目前正在通过OpenClassrooms学习Ruby on Rails,他们正在使用这段代码:
validates :name, presence: {
message: "Give a name"
}
当我尝试创建不带名称的对象时,没有任何错误。例如:
me = Person.new name:""
me.errors.to_hash
=> {}
在相同的示例(不是相同的类)下,OpenClassrooms出现错误,我不知道为什么我没有任何错误
答案 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!
。