I recently came across this deprecation warning
DEPRECATION WARNING: Method size is deprecated and will be removed in Rails 5.1, as
ActionController::Parametersno 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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With