ActionController::Parameters deprecation warning: Method size is deprecated and will be removed in Rails 5.1
ruby-on-rails, ruby-on-rails-5
Solution
As mentioned in the comments you have to convert `params` to Hash since in Rails 5 `params` no longer inherits from `Hash`. So `.size`, `.length` and `.count` won't work on params directly.
How to convert it to `Hash` (shorter code may be possible):
permitted_params = params.require(:your_model_name).permit(
:product_inspirationals => [
:priority,
:style
]
).to_h
puts permitted_params[:product_inspirationals].length
Don't know about your model structure so you have to adjust it to your needs.
Problem
I recently came across this deprecation warning DEPRECATION WARNING: Method size is deprecated and will be removed in Rails 5.1, as `ActionController::Parameters` no longer inherits from hash. Using this deprecated behavior exposes potential security problems. If you continue to use this method you may be creating a security vulnerability in your app that can be exploited. Params looked like this: ``` <ActionController::Parameters { "objects" => <ActionController::Parameters { "0"=>{"priority"=>"24", "style"=>"three_pictures"}, "1"=>{"priority"=>"24", "style"=>"three_pictures"}, "2"=>{"priority"=>"24", "style"=>"three_pictures"} } permitted: false> } permitted: false> ``` And I tried to find the size of `objects` like this: `params[:objects].size` And then I tried the same thing with `length` and `count`, which results in the same warning. What would be the work around for this? `.keys.length` is something that works, but is this the correct way to do it or am I missing something here?