railsでjsonに、permitで要素チェックしたい時の方法
とりあえず、声を大にして言いたいのは
railsのscaffoldは案外、知見がいっぱいあるよ
(特に、初心者の方にとっては。)
ということで、最近、jmeterの使い方から、負荷計測の方法のさわりをお伝えすべく、いろいろ準備していたりします。
さて、今日はRailsのPermitメソッドについて改めて記録しておきたいと思います。
Railsでは、permitっていう要素をチェックする仕組みがあるのですが、これはぜひ有効活用していったほうが良さそうです。
(ちなみに、node.jsだと、json_schemeってので、対応しておりました。)
# Never trust parameters from the scary internet, only allow the white list through. def user_params params.require(:user).permit(:name, :email, :password) end
こういうやつね。
scaffoldすると、全自動でブッこんでくれてるみたいなんですけれども、この仕組超便利っぽいですね。
なぜなら、この1行で、
1, paramsの中には、userというattributeがあって、 2, 更にその中で許可しているのは、name, email, passwordという要素のみ
ということをチェックしてくれているからです。
うーん、この仕組み、可能であれば、jsonのやりとりしてる時でも使いたいな。。。
ただ、jsonのparamsの中に入ってる状態って、パースされてなくて、使えないんだよね。
そんな時はこんなかんじにするといいよっていうのを調べました。
# Never trust parameters from the scary internet, only allow the white list through. def user_params # 下記のようにすることで、paramsで実行していたpermitと同様のことができる json_request = ActionController::Parameters.new(JSON.parse(request.body.read)) json_request.permit(:name, :email, :password) end
まぁ、なんといっても、大切なのは下記の1行
json_request = ActionController::Parameters.new(JSON.parse(request.body.read))
ActionControllerとしてnewするとpermitが使えるらしい。
これで、更新してほしくないパラメータのロックとかができるようになります。
自前で、チェックをかけようとしてるのであれば、検討してみると良いかもしれません。