我正在尝试创建一个XML构建器文件,告诉用户确切地知道哪些字段在输出中验证失败。我还想将它们的输入显示给它们,因此需要我确定哪些字段未通过验证。这意味着如果某人未能创建新的用户资源,我想显示有意义的XML(除了有意义的HTTP状态编号),例如:
<errors>
<user>
<email>bad@email: Invalid email format</email>
</user>
<errors>
如果不知道哪个字段失败,上面的XML构建器文件很难做到。如果我只是迭代错误消息,我将不知道如何探索我的@user对象以获取用户提供的值。
答案 0 :(得分:0)
company = Company.create(:address => '123 First St.')
company.errors.on(:name) # => ["is too short (minimum is 5 characters)", "can't be blank"]
company.errors.on(:email) # => "can't be blank"
company.errors.on(:address) # => nil
或者您可以使用ActiveRecord::Errors#each
获取所有带错误的属性
company = Company.create(:address => '123 First St.')
company.errors.each{|attr,msg| puts "#{attr} - #{msg}" }
# => name - is too short (minimum is 5 characters)
# name - can't be blank
# address - can't be blank
答案 1 :(得分:0)
直接来自API docs:
company.errors.each{|attr,msg| puts "#{attr} - #{msg}" } # =>
name - is too short (minimum is 5 characters)
name - can't be blank
address - can't be blank
这不是您要找的:attr
变量将是字段名称。