diff --git a/actionpack/lib/action_controller/metal/strong_parameters.rb b/actionpack/lib/action_controller/metal/strong_parameters.rb index 1977632c4e51b53a67169a9fa75d3b479c48fdd8..b398d24b59d1f225621e13d514a3a554ed32af5c 100644 --- a/actionpack/lib/action_controller/metal/strong_parameters.rb +++ b/actionpack/lib/action_controller/metal/strong_parameters.rb @@ -807,11 +807,12 @@ def hash_filter(params, filter) def permit_any_in_parameters(params) self.class.new.tap do |sanitized| params.each do |key, value| - if permitted_scalar?(value) + case value + when ->(v) { permitted_scalar?(v) } sanitized[key] = value - elsif value.is_a?(Array) + when Array sanitized[key] = permit_any_in_array(value) - elsif value.is_a?(Parameters) + when Parameters sanitized[key] = permit_any_in_parameters(value) else # Filter this one out. @@ -824,9 +825,10 @@ def permit_any_in_parameters(params) def permit_any_in_array(array) [].tap do |sanitized| array.each do |element| - if permitted_scalar?(element) + case element + when ->(e) { permitted_scalar?(e) } sanitized << element - elsif element.is_a?(Parameters) + when Parameters sanitized << permit_any_in_parameters(element) else # Filter this one out.