From 08fd9f4f1174ce20f8ecbcda1c2509bb598ce200 Mon Sep 17 00:00:00 2001 From: Benjamin Quorning Date: Wed, 17 Feb 2016 14:44:32 +0100 Subject: Fix AC::Parameters#== with other AC::Parameters Creating a protected getter method for `@parameters`. --- actionpack/lib/action_controller/metal/strong_parameters.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'actionpack/lib/action_controller/metal/strong_parameters.rb') diff --git a/actionpack/lib/action_controller/metal/strong_parameters.rb b/actionpack/lib/action_controller/metal/strong_parameters.rb index e17189f9f9..3d3015ad07 100644 --- a/actionpack/lib/action_controller/metal/strong_parameters.rb +++ b/actionpack/lib/action_controller/metal/strong_parameters.rb @@ -144,11 +144,10 @@ 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. This - # override is in place so you can perform a comparison with `Hash`. + # permitted flag, or other Hash-like object contains the same content. def ==(other_hash) if other_hash.respond_to?(:permitted?) - super + self.permitted? == other_hash.permitted? && self.parameters == other_hash.parameters else if other_hash.is_a?(Hash) @parameters == other_hash.with_indifferent_access @@ -597,6 +596,8 @@ module ActionController end protected + attr_reader :parameters + def permitted=(new_permitted) @permitted = new_permitted end -- cgit v1.2.3 From 30440363c077dc081f7f14a2a40ca72b0fbaae67 Mon Sep 17 00:00:00 2001 From: Benjamin Quorning Date: Wed, 17 Feb 2016 14:48:35 +0100 Subject: Deprecate AC::Parameters#== with a Hash --- .../action_controller/metal/strong_parameters.rb | 23 +++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'actionpack/lib/action_controller/metal/strong_parameters.rb') 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 -- cgit v1.2.3