Rails:如何循环验证错误?

时间:2010-03-09 18:03:35

标签: ruby-on-rails arrays validation

我正在为我的应用构建API,并希望返回由验证错误生成的XML响应中的错误。

所以说你在网站上注册,现在返回的验证错误可能是:

Login has already been taken
Password is too short (minimum is 6 characters)
Email has already been taken

但我想重新格式化为:

<errors>
    <error>Login has already been taken</error>
    <error>Password is too short (minimum is 6 characters)</error>
    <error>Email has already been taken</error>
</errors>

那么,我如何访问验证错误数组呢?

3 个答案:

答案 0 :(得分:5)

Rails默认为您提供此功能,即

  user.errors.to_xml

会给你

=>  <?xml version="1.0" encoding="UTF-8"?>
    <errors>  
     <error>Name can't be blank</error>
     <error>Wiki url can't be blank</error>
     <error>User can't be blank</error>
    </errors>

答案 1 :(得分:1)

模型对象将有一个可以迭代的errors对象,validations doc中的一些示例。

答案 2 :(得分:1)

在错误方法

上调用#to_xml

user = User.new
unless user.valid?
  return user.errors.to_xml
end