aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2018-04-19 15:05:27 -0400
committerRafael Mendonça França <rafaelmfranca@gmail.com>2018-04-19 15:05:27 -0400
commit0bf3e769e797da7bcf9b1b23a62623cc5abd6f28 (patch)
treed30179fea3e7d151b27467d96d521973d9a2bb08 /actionpack
parent6fec9c27e5563d7c98e123c8d8eb8ef2f0c34b65 (diff)
parente539f2d5850c00ba40514af9b8f1961b0f208fe6 (diff)
downloadrails-0bf3e769e797da7bcf9b1b23a62623cc5abd6f28.tar.gz
rails-0bf3e769e797da7bcf9b1b23a62623cc5abd6f28.tar.bz2
rails-0bf3e769e797da7bcf9b1b23a62623cc5abd6f28.zip
Merge pull request #32593 from sdhull/fix-strong-params-permit-bang
Fixes StrongParameters `permit!` to work with nested arrays
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_controller/metal/strong_parameters.rb2
-rw-r--r--actionpack/test/controller/parameters/parameters_permit_test.rb5
2 files changed, 5 insertions, 2 deletions
diff --git a/actionpack/lib/action_controller/metal/strong_parameters.rb b/actionpack/lib/action_controller/metal/strong_parameters.rb
index 4789252550..5a06bf86e3 100644
--- a/actionpack/lib/action_controller/metal/strong_parameters.rb
+++ b/actionpack/lib/action_controller/metal/strong_parameters.rb
@@ -374,7 +374,7 @@ module ActionController
# Person.new(params) # => #<Person id: nil, name: "Francesco">
def permit!
each_pair do |key, value|
- Array.wrap(value).each do |v|
+ Array.wrap(value).flatten.each do |v|
v.permit! if v.respond_to? :permit!
end
end
diff --git a/actionpack/test/controller/parameters/parameters_permit_test.rb b/actionpack/test/controller/parameters/parameters_permit_test.rb
index 09ac19580f..34b9ac0ab8 100644
--- a/actionpack/test/controller/parameters/parameters_permit_test.rb
+++ b/actionpack/test/controller/parameters/parameters_permit_test.rb
@@ -353,12 +353,15 @@ class ParametersPermitTest < ActiveSupport::TestCase
assert_equal "Jonas", @params[:person][:family][:brother]
end
- test "permit is recursive" do
+ test "permit! is recursive" do
+ @params[:nested_array] = [[{ x: 2, y: 3 }, { x: 21, y: 42 }]]
@params.permit!
assert_predicate @params, :permitted?
assert_predicate @params[:person], :permitted?
assert_predicate @params[:person][:name], :permitted?
assert_predicate @params[:person][:addresses][0], :permitted?
+ assert_predicate @params[:nested_array][0][0], :permitted?
+ assert_predicate @params[:nested_array][0][1], :permitted?
end
test "permitted takes a default value when Parameters.permit_all_parameters is set" do