diff options
author | Rafael França <rafaelmfranca@gmail.com> | 2018-08-22 16:08:50 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-22 16:08:50 -0500 |
commit | c97faea18ced01a969646878dd4ac80e19ec889b (patch) | |
tree | 51a84dbb2ae27bae01d6d1c6fdfff1bb6e8802dd /actionpack/lib | |
parent | 17978719e4f1d3de6e3d1a00e4cd7a2116802f53 (diff) | |
parent | ce6166f3079e96836dcd93fc68f1618f53a1d1cc (diff) | |
download | rails-c97faea18ced01a969646878dd4ac80e19ec889b.tar.gz rails-c97faea18ced01a969646878dd4ac80e19ec889b.tar.bz2 rails-c97faea18ced01a969646878dd4ac80e19ec889b.zip |
Merge pull request #33695 from peterzhu2118/master
Update ParameterFilter to yield original parameters
Diffstat (limited to 'actionpack/lib')
-rw-r--r-- | actionpack/lib/action_dispatch/http/parameter_filter.rb | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/actionpack/lib/action_dispatch/http/parameter_filter.rb b/actionpack/lib/action_dispatch/http/parameter_filter.rb index de11939fa8..09aab631ed 100644 --- a/actionpack/lib/action_dispatch/http/parameter_filter.rb +++ b/actionpack/lib/action_dispatch/http/parameter_filter.rb @@ -56,23 +56,23 @@ module ActionDispatch @blocks = blocks end - def call(original_params, parents = []) - filtered_params = original_params.class.new + def call(params, parents = [], original_params = params) + filtered_params = params.class.new - original_params.each do |key, value| + params.each do |key, value| parents.push(key) if deep_regexps if regexps.any? { |r| key =~ r } value = FILTERED elsif deep_regexps && (joined = parents.join(".")) && deep_regexps.any? { |r| joined =~ r } value = FILTERED elsif value.is_a?(Hash) - value = call(value, parents) + value = call(value, parents, original_params) elsif value.is_a?(Array) - value = value.map { |v| v.is_a?(Hash) ? call(v, parents) : v } + value = value.map { |v| v.is_a?(Hash) ? call(v, parents, original_params) : v } elsif blocks.any? key = key.dup if key.duplicable? value = value.dup if value.duplicable? - blocks.each { |b| b.call(key, value) } + blocks.each { |b| b.arity == 2 ? b.call(key, value) : b.call(key, value, original_params) } end parents.pop if deep_regexps |