提交 30440363 编写于 作者: B Benjamin Quorning

Deprecate AC::Parameters#== with a Hash

上级 08fd9f4f
......@@ -144,16 +144,21 @@ def initialize(parameters = {})
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
......
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册