aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/request
diff options
context:
space:
mode:
authorGenadi Samokovarov <gsamokovarov@gmail.com>2013-05-30 21:26:37 +0300
committerGenadi Samokovarov <gsamokovarov@gmail.com>2013-05-30 21:26:37 +0300
commit5438f6866efa679331e5c998ecbc5948e80cd503 (patch)
treebd1b32d2845b39877d512cb0e38c8a3bc45cf250 /actionpack/lib/action_dispatch/request
parentc2f3efffd905f8f21eb5ea88687b738fe8a119a2 (diff)
downloadrails-5438f6866efa679331e5c998ecbc5948e80cd503.tar.gz
rails-5438f6866efa679331e5c998ecbc5948e80cd503.tar.bz2
rails-5438f6866efa679331e5c998ecbc5948e80cd503.zip
Extract ActionDispatch::Request#deep_munge
ActionDispatch::Request#deep_munge was introduced as a private method, but was turned into a public one for the use of ActionDispatch::ParamsParser. I have extracted it into ActionDispatch::Request::Utils, so it does not get mixed up with the Request public methods.
Diffstat (limited to 'actionpack/lib/action_dispatch/request')
-rw-r--r--actionpack/lib/action_dispatch/request/utils.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/actionpack/lib/action_dispatch/request/utils.rb b/actionpack/lib/action_dispatch/request/utils.rb
new file mode 100644
index 0000000000..8b43cdada8
--- /dev/null
+++ b/actionpack/lib/action_dispatch/request/utils.rb
@@ -0,0 +1,24 @@
+module ActionDispatch
+ class Request < Rack::Request
+ class Utils # :nodoc:
+ class << self
+ # Remove nils from the params hash
+ def deep_munge(hash)
+ hash.each do |k, v|
+ case v
+ when Array
+ v.grep(Hash) { |x| deep_munge(x) }
+ v.compact!
+ hash[k] = nil if v.empty?
+ when Hash
+ deep_munge(v)
+ end
+ end
+
+ hash
+ end
+ end
+ end
+ end
+end
+