2016-06-29 8 views
0

、原始的ではないハッシュを必要とするが、私は記事の数十を読んで、この問題の解決策を終了している:私は私のAPIコントローラ防弾を作成しようとしているActionControllerパラメータは、私はルビーにかなり新しいです

。要求を検証するために、私はActionController::Parametersを使用しています。

params.require(:user).permit(:email) 
誰かが、それはエラーとなり、 {"user": "abc"}でこれを呼び出す場合

、およびHTTP 500、それははっきりとuserに渡していないため、ユーザのせいです:私のUsers APIコントローラで例えば

、ハッシュ、およびHTTP 400を生じるはずである:

NoMethodError in API::UsersController#update 
undefined method `permit' for "abc":String Did you mean? print 

どのように私は私のAPIのユーザーはハッシュで渡すことを確認しますか? (ルビー2.3)を掘る:

を繰り返し、各キーのオブジェクトに対応する値オブジェクトを取得し

答えて

0

は、あなたが使用することができ、この方法があります。

http://ruby-doc.org/core-2.3.0_preview1/Hash.html#method-i-dig

ですから、params.digを言うことができる(:ユーザー:電子メール)を

あなたのparamsも言うことができる:(:Eメール)が、最初のものは

優れている[ユーザー] .has_key?

また、あなたが400で処理すべきかどうかわからない、関連ノートに - 私はそれが422であるので、422が良いかもしれだと思います - 処理不能エンティティ

が、重要ではありません...

関連する問題