diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2013-09-12 15:20:09 -0700 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2013-09-12 15:20:09 -0700 |
commit | b3a9cac18f68a7c7d740089bb208481332bb4ec7 (patch) | |
tree | 22e9f9d99d3e4018fa1d1f4c796f7a7995015742 /actionpack | |
parent | 8f57b22025999e6911399d81b93ac145ec674bef (diff) | |
parent | 1d375e59f1deeeb13df68baecaf8a0e8602dd933 (diff) | |
download | rails-b3a9cac18f68a7c7d740089bb208481332bb4ec7.tar.gz rails-b3a9cac18f68a7c7d740089bb208481332bb4ec7.tar.bz2 rails-b3a9cac18f68a7c7d740089bb208481332bb4ec7.zip |
Merge pull request #12159 from nashby/issue-12149
do not break params filtering on nil values
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_controller/metal/strong_parameters.rb | 2 | ||||
-rw-r--r-- | actionpack/test/controller/parameters/parameters_permit_test.rb | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/metal/strong_parameters.rb b/actionpack/lib/action_controller/metal/strong_parameters.rb index ae600b1ebe..b495ab3f0f 100644 --- a/actionpack/lib/action_controller/metal/strong_parameters.rb +++ b/actionpack/lib/action_controller/metal/strong_parameters.rb @@ -421,7 +421,7 @@ module ActionController # Slicing filters out non-declared keys. slice(*filter.keys).each do |key, value| - return unless value + next unless value if filter[key] == EMPTY_ARRAY # Declaration { comment_ids: [] }. diff --git a/actionpack/test/controller/parameters/parameters_permit_test.rb b/actionpack/test/controller/parameters/parameters_permit_test.rb index 437da43d9b..84e007b5d0 100644 --- a/actionpack/test/controller/parameters/parameters_permit_test.rb +++ b/actionpack/test/controller/parameters/parameters_permit_test.rb @@ -107,6 +107,15 @@ class ParametersPermitTest < ActiveSupport::TestCase assert_equal [], permitted[:id] end + test 'do not break params filtering on nil values' do + params = ActionController::Parameters.new(a: 1, b: [1, 2, 3], c: nil) + + permitted = params.permit(:a, c: [], b: []) + assert_equal 1, permitted[:a] + assert_equal [1, 2, 3], permitted[:b] + assert_equal nil, permitted[:c] + end + test 'key to empty array: arrays of permitted scalars pass' do [['foo'], [1], ['foo', 'bar'], [1, 2, 3]].each do |array| params = ActionController::Parameters.new(id: array) |