繁体   English   中英

Ruby on Rails:有没有办法告诉ActiveRecord哪些字段验证失败?

[英]Ruby on Rails: Is there a way to tell what fields failed validation in ActiveRecord?

我正在尝试创建一个XML构建器文件,该文件告诉用户确切地知道输出中验证失败的字段。 我还想将他们的输入显示回去,所以这需要我弄清楚哪些字段验证失败。 意思是如果某人未能创建新的用户资源,我想显示有意义的XML(除了有意义的HTTP状态编号),例如:

<errors>
    <user>
        <email>bad@email: Invalid email format</email>
    </user>
<errors>

在不知道哪个字段失败的情况下,很难在XML构建器文件中执行以上操作。 而且,如果我只是遍历错误消息,我将不知道如何验证@user对象以获取用户提供的值。

使用ActiveRecord::Errors#on

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

直接来自API文档

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变量将是字段名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM