diff options
author | Sean Griffin <sean@seantheprogrammer.com> | 2016-03-09 09:47:46 -0700 |
---|---|---|
committer | Sean Griffin <sean@seantheprogrammer.com> | 2016-03-09 09:49:23 -0700 |
commit | 5cd2beb0135faf18c978507a4be272dfc1499bb8 (patch) | |
tree | bfb5b95cd9679fd34e3448987d1e70f314125b6d /actionpack/lib/action_controller/metal/strong_parameters.rb | |
parent | 20f2727ba4de36f8c98091340e8a89327013912f (diff) | |
download | rails-5cd2beb0135faf18c978507a4be272dfc1499bb8.tar.gz rails-5cd2beb0135faf18c978507a4be272dfc1499bb8.tar.bz2 rails-5cd2beb0135faf18c978507a4be272dfc1499bb8.zip |
Add `ActionController::Parameters#dig`
This method will only be added when used with Ruby 2.3.0 or greater.
This method has the same behavior as `Hash#dig`, except it will convert
hashes to `ActionController::Parameters`, similar to `#[]` and `#fetch`.
Diffstat (limited to 'actionpack/lib/action_controller/metal/strong_parameters.rb')
-rw-r--r-- | actionpack/lib/action_controller/metal/strong_parameters.rb | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/actionpack/lib/action_controller/metal/strong_parameters.rb b/actionpack/lib/action_controller/metal/strong_parameters.rb index a01110d474..6d59e32c68 100644 --- a/actionpack/lib/action_controller/metal/strong_parameters.rb +++ b/actionpack/lib/action_controller/metal/strong_parameters.rb @@ -430,6 +430,21 @@ module ActionController ) end + if Hash.method_defined?(:dig) + # Extracts the nested parameter from the given +keys+ by calling +dig+ + # at each step. Returns +nil+ if any intermediate step is +nil+. + # + # params = ActionController::Parameters.new(foo: { bar: { baz: 1 } }) + # params.dig(:foo, :bar, :baz) # => 1 + # params.dig(:foo, :zot, :xyz) # => nil + # + # params2 = ActionController::Parameters.new(foo: [10, 11, 12]) + # params2.dig(:foo, 1) + def dig(*keys) + convert_value_to_parameters(@parameters.dig(*keys)) + end + end + # Returns a new <tt>ActionController::Parameters</tt> instance that # includes only the given +keys+. If the given +keys+ # don't exist, returns an empty hash. |