aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
authorEdouard CHIN <edouard.chin@shopify.com>2017-03-09 01:42:16 -0500
committerEdouard CHIN <edouard.chin@shopify.com>2017-03-09 13:48:13 -0500
commit4d7986283653ff4fbd5a82dd273ed9795a0c6a65 (patch)
treec200fe9a7cfe2fcb8686b4359881d65bfc10f2bb /actionpack/lib
parentc741b493409a5d8ae1f2514f73570a014ddc6b57 (diff)
downloadrails-4d7986283653ff4fbd5a82dd273ed9795a0c6a65.tar.gz
rails-4d7986283653ff4fbd5a82dd273ed9795a0c6a65.tar.bz2
rails-4d7986283653ff4fbd5a82dd273ed9795a0c6a65.zip
Added `reverse_merge`/`reverse_merge!` to AC::Parameters:
- This PR adds the `reverse_merge` and `reverse_merge!` method to `ActionController::Parameters` - Fixes #28353
Diffstat (limited to 'actionpack/lib')
-rw-r--r--actionpack/lib/action_controller/metal/strong_parameters.rb15
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 9690f0ca28..0217376ab3 100644
--- a/actionpack/lib/action_controller/metal/strong_parameters.rb
+++ b/actionpack/lib/action_controller/metal/strong_parameters.rb
@@ -660,6 +660,21 @@ module ActionController
self
end
+ # Returns a new <tt>ActionController::Parameters</tt> with all keys from
+ # current hash merged into +other_hash+.
+ def reverse_merge(other_hash)
+ new_instance_with_inherited_permitted_status(
+ other_hash.to_h.merge(@parameters)
+ )
+ end
+
+ # Returns current <tt>ActionController::Parameters</tt> instance with
+ # current hash merged into +other_hash+.
+ def reverse_merge!(other_hash)
+ @parameters.merge!(other_hash.to_h) { |key, left, right| left }
+ self
+ end
+
# This is required by ActiveModel attribute assignment, so that user can
# pass +Parameters+ to a mass assignment methods in a model. It should not
# matter as we are using +HashWithIndifferentAccess+ internally.