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?
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