小ネタ。
環境
$ bundle exec rails -v Rails 5.2.1
事例
paramsはそのままだと ActionController::Parameters
なのでhashにまつわるクラスがつかえなかったりする
# binding.pryなどした例 params # => <ActionController::Parameters {"contents"=>{"title"=>"hoge", "body"=>"huga"}, "controller"=>"main/contents", "action"=>"create"} permitted: false>
たとえば deep_stringify_keys
とかが使えない
params.deep_stringify_keys
# NoMethodError: undefined method `deep_stringify_keys' for #<ActionController::Parameters:0x00007fb186fa4030>
そういう場合は一回permit!するとhash化できるようになるのでそうするといい。
params.permit!.to_h.deep_stringify_keys
# => {"contents"=>{"title"=>"hoge", "body"=>"huga"}, "controller"=>"main/contents", "action"=>"create"}