diff options
author | Benjamin Quorning <benjamin@quorning.net> | 2016-02-17 14:48:35 +0100 |
---|---|---|
committer | Benjamin Quorning <benjamin@quorning.net> | 2016-02-19 09:18:08 +0100 |
commit | 30440363c077dc081f7f14a2a40ca72b0fbaae67 (patch) | |
tree | 2cfd83cd5b328ca11b95143c3aeb9934fa1f8467 | |
parent | 08fd9f4f1174ce20f8ecbcda1c2509bb598ce200 (diff) | |
download | rails-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.rb | 23 | ||||
-rw-r--r-- | actionpack/test/controller/parameters/accessors_test.rb | 6 |
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 |