1

我的 rails 应用程序用作我的 android 应用程序的 API。我想知道当请求遇到任何问题时,有没有办法检测它在服务器端是哪个错误并返回特定代码?

例如,在我的users_controller.rb,

if @user.save
  respond_with(@user)
else  
  render json: {errors: @user.errors.full_messages}
end

输出如下所示:

{"errors":["Username can't be blank","Password is too short (minimum is 6 characters)","Email has already been taken"]}

如何检查是否是由于电子邮件错误或控制器中的密码错误?谢谢!

4

2 回答 2

1

您可以使用@user.errors[:field_name] 检查特定字段的错误。检查特定字段是否无效的一种快速方法是使用.any?

IE

@user.errors[:field_name].any?

如果此字段有任何问题,将返回 true。

于 2012-10-31T17:29:17.477 回答
-3
  • 转到 Rails 控制台
  • 类型:u = User.new
  • 类型:u.valid?
  • 类型:u.errors

检查结果。你应该能够弄清楚。

或者阅读文档:http ://api.rubyonrails.org/classes/ActiveModel/Errors.html

提示:errors 只是一个带有一些额外便利方法的 OrderedHash 对象,例如 full_messages。它包含您要查找的所有信息,只是不在 full_messages 中。

于 2012-10-31T17:31:09.110 回答