aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Quorning <benjamin@quorning.net>2016-02-17 14:48:35 +0100
committerBenjamin Quorning <benjamin@quorning.net>2016-02-19 09:18:08 +0100
commit30440363c077dc081f7f14a2a40ca72b0fbaae67 (patch)
tree2cfd83cd5b328ca11b95143c3aeb9934fa1f8467
parent08fd9f4f1174ce20f8ecbcda1c2509bb598ce200 (diff)
downloadrails-30440363c077dc081f7f14a2a40ca72b0fbaae67.tar.gz
rails-30440363c077dc081f7f14a2a40ca72b0fbaae67.tar.bz2
rails-30440363c077dc081f7f14a2a40ca72b0fbaae67.zip
Deprecate AC::Parameters#== with a Hash
-rw-r--r--actionpack/lib/action_controller/metal/strong_parameters.rb23
-rw-r--r--actionpack/test/controller/parameters/accessors_test.rb6
2 files changed, 18 insertions, 11 deletions
diff --git a/actionpack/lib/action_controller/metal/strong_parameters.rb b/actionpack/lib/action_controller/metal/strong_parameters.rb
index 3d3015ad07..25ec3cf5b6 100644
--- a/actionpack/lib/action_controller/metal/strong_parameters.rb
+++ b/actionpack/lib/action_controller/metal/strong_parameters.rb
@@ -144,16 +144,21 @@ module ActionController
end
# Returns true if another +Parameters+ object contains the same content and
- # permitted flag, or other Hash-like object contains the same content.
- def ==(other_hash)
- if other_hash.respond_to?(:permitted?)
- self.permitted? == other_hash.permitted? && self.parameters == other_hash.parameters
+ # permitted flag.
+ def ==(other)
+ if other.respond_to?(:permitted?)
+ self.permitted? == other.permitted? && self.parameters == other.parameters
+ elsif other.is_a?(Hash)
+ ActiveSupport::Deprecation.warn <<-WARNING.squish
+ Comparing equality between `ActionController::Parameters` and a
+ `Hash` is deprecated and will be removed in Rails 5.1. Please only do
+ comparisons between instances of `ActionController::Parameters`. If
+ you need to compare to a hash, first convert it using
+ `ActionController::Parameters#new`.
+ WARNING
+ @parameters == other.with_indifferent_access
else
- if other_hash.is_a?(Hash)
- @parameters == other_hash.with_indifferent_access
- else
- @parameters == other_hash
- end
+ @parameters == other
end
end
diff --git a/actionpack/test/controller/parameters/accessors_test.rb b/actionpack/test/controller/parameters/accessors_test.rb
index ef8eb5f33e..4ef5bed30d 100644
--- a/actionpack/test/controller/parameters/accessors_test.rb
+++ b/actionpack/test/controller/parameters/accessors_test.rb
@@ -129,10 +129,12 @@ class ParametersAccessorsTest < ActiveSupport::TestCase
assert_not @params[:person].values_at(:name).first.permitted?
end
- test "equality with another hash works" do
+ test "equality with a hash is deprecated" do
hash1 = { foo: :bar }
params1 = ActionController::Parameters.new(hash1)
- assert(params1 == hash1)
+ assert_deprecated("will be removed in Rails 5.1") do
+ assert(params1 == hash1)
+ end
end
test "is equal to Parameters instance with same params" do