diff options
author | Jon Moss <me@jonathanmoss.me> | 2016-01-21 17:28:18 -0500 |
---|---|---|
committer | Jon Moss <me@jonathanmoss.me> | 2016-01-21 17:28:18 -0500 |
commit | 627f736cc0a1a7b32e67303b92b963d4b6d9e68c (patch) | |
tree | cea7ae0af777964f584cb4581f5c1013c9c19409 /actionpack | |
parent | 06397336b2c9b1de9462f1baa8075573fd3709dd (diff) | |
download | rails-627f736cc0a1a7b32e67303b92b963d4b6d9e68c.tar.gz rails-627f736cc0a1a7b32e67303b92b963d4b6d9e68c.tar.bz2 rails-627f736cc0a1a7b32e67303b92b963d4b6d9e68c.zip |
Fix `ActionController::Parameters#==` bug
See bug #21032.
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/CHANGELOG.md | 4 | ||||
-rw-r--r-- | actionpack/lib/action_controller/metal/strong_parameters.rb | 6 | ||||
-rw-r--r-- | actionpack/test/controller/parameters/accessors_test.rb | 6 |
3 files changed, 15 insertions, 1 deletions
diff --git a/actionpack/CHANGELOG.md b/actionpack/CHANGELOG.md index f6ffe45490..4af5ccbbb8 100644 --- a/actionpack/CHANGELOG.md +++ b/actionpack/CHANGELOG.md @@ -1,3 +1,7 @@ +* Fix `ActionController::Parameters==` + + *Jon Moss* + * Response etags to always be weak: Prefixes 'W/' to value returned by `ActionDispatch::Http::Cache::Response#etag=`, such that etags set in `fresh_when` and `stale?` are weak. diff --git a/actionpack/lib/action_controller/metal/strong_parameters.rb b/actionpack/lib/action_controller/metal/strong_parameters.rb index e9aa0aae37..ba03430930 100644 --- a/actionpack/lib/action_controller/metal/strong_parameters.rb +++ b/actionpack/lib/action_controller/metal/strong_parameters.rb @@ -160,7 +160,11 @@ module ActionController if other_hash.respond_to?(:permitted?) super else - @parameters == other_hash + if other_hash.is_a?(Hash) + @parameters == other_hash.with_indifferent_access + else + @parameters == other_hash + end end end diff --git a/actionpack/test/controller/parameters/accessors_test.rb b/actionpack/test/controller/parameters/accessors_test.rb index a8f4d877a6..bd43ff7697 100644 --- a/actionpack/test/controller/parameters/accessors_test.rb +++ b/actionpack/test/controller/parameters/accessors_test.rb @@ -128,4 +128,10 @@ class ParametersAccessorsTest < ActiveSupport::TestCase assert_not @params.values_at(:person).first.permitted? assert_not @params[:person].values_at(:name).first.permitted? end + + test "equality with another hash works" do + hash1 = { foo: :bar } + params1 = ActionController::Parameters.new(hash1) + assert(params1 == hash1) + end end |