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?

すなわち

@user.errors[:field_name].any?

このフィールドになんらかの問題がある場合は true を返します。

于 2012-10-31T17:29:17.477 に答える
-3
  • レールコンソールに移動
  • タイプ: u = User.new
  • タイプ: u.valid?
  • タイプ: u.errors

結果を調べます。あなたはそれを理解できるはずです。

または、ドキュメントを参照してください: http://api.rubyonrails.org/classes/ActiveModel/Errors.html

ヒント: エラーは、full_messages などのいくつかの便利なメソッドを追加した単なる OrderedHash オブジェクトです。full_messages に含まれていないだけで、探しているすべての情報が含まれています。

于 2012-10-31T17:31:09.110 に答える