はじめに
JSON形式でPOSTをしたときに、どのようにパラメータが送られるのかをまとめます。
POST
usersコントローラーへパラメーターを送ります。
$ curl -X POST -H "Content-Type: application/json" -d '{"name": "hoge", "email": "mail@example.com"}' http://localhost:3000/users
すると、パラメーターは次のようになります。
Parameters: {"name"=>"hoge", "email"=>"mail@example.com", "user"=>{"name"=>"hoge", "email"=>"mail@example.com"}}
これ、送ったパラメーターをコントローラー名で勝手にネストしてくれているそうです。
そうすることで、railsではparams[:user][:name]
という形でパラメーターを使うことができていたんですね!
userでネストされていないパラメーターも使うことができます。
しかし、セキュリティの観点からも使用しないほうが良さそうですね。
ストロングパラメータではせっかくモデル名を指定して例外のパラメータを除外しているので、それに乗るのがいいでしょう!
参考
https://railsguides.jp/action_controller_overview.html
Qiitaの下書きに残したまま忘れていたので今投稿します