diff options
author | Rafael França <rafaelmfranca@gmail.com> | 2018-09-28 12:00:21 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-28 12:00:21 -0400 |
commit | 7d3f1c414f5dd4b8f9200676b4c370a29cfd7960 (patch) | |
tree | 1ad61f472a9fe11087f86f3da7b66878c4f7bdb3 /activesupport | |
parent | 6ff4faffb1e752c9713b4276c90bfb45feade498 (diff) | |
parent | b2ea8310734b734c29b806f272c866045fc9bca7 (diff) | |
download | rails-7d3f1c414f5dd4b8f9200676b4c370a29cfd7960.tar.gz rails-7d3f1c414f5dd4b8f9200676b4c370a29cfd7960.tar.bz2 rails-7d3f1c414f5dd4b8f9200676b4c370a29cfd7960.zip |
Merge pull request #34012 from abraham-chan/indifferent-access-without
Fix HashWithIndifferentAccess#without bug
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/CHANGELOG.md | 5 | ||||
-rw-r--r-- | activesupport/lib/active_support/hash_with_indifferent_access.rb | 2 | ||||
-rw-r--r-- | activesupport/test/hash_with_indifferent_access_test.rb | 11 |
3 files changed, 18 insertions, 0 deletions
diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md index 39f366bc88..3a348a26bf 100644 --- a/activesupport/CHANGELOG.md +++ b/activesupport/CHANGELOG.md @@ -1,3 +1,8 @@ +* Fix bug where `#without` for `ActiveSupport::HashWithIndifferentAccess` would fail + with symbol arguments + + *Abraham Chan* + * Treat `#delete_prefix`, `#delete_suffix` and `#unicode_normalize` results as non-`html_safe`. Ensure safety of arguments for `#insert`, `#[]=` and `#replace` calls on `html_safe` Strings. diff --git a/activesupport/lib/active_support/hash_with_indifferent_access.rb b/activesupport/lib/active_support/hash_with_indifferent_access.rb index e4afc8af93..b9e64ed05d 100644 --- a/activesupport/lib/active_support/hash_with_indifferent_access.rb +++ b/activesupport/lib/active_support/hash_with_indifferent_access.rb @@ -279,6 +279,8 @@ module ActiveSupport super(convert_key(key)) end + alias_method :without, :except + def stringify_keys!; self end def deep_stringify_keys!; self end def stringify_keys; dup end diff --git a/activesupport/test/hash_with_indifferent_access_test.rb b/activesupport/test/hash_with_indifferent_access_test.rb index eebff18ef1..af67ed21c8 100644 --- a/activesupport/test/hash_with_indifferent_access_test.rb +++ b/activesupport/test/hash_with_indifferent_access_test.rb @@ -672,6 +672,17 @@ class HashWithIndifferentAccessTest < ActiveSupport::TestCase assert_equal "bender", slice["login"] end + def test_indifferent_without + original = { a: "x", b: "y", c: 10 }.with_indifferent_access + expected = { c: 10 }.with_indifferent_access + + [["a", "b"], [:a, :b]].each do |keys| + # Should return a new hash without the given keys. + assert_equal expected, original.without(*keys), keys.inspect + assert_not_equal expected, original + end + end + def test_indifferent_extract original = { :a => 1, "b" => 2, :c => 3, "d" => 4 }.with_indifferent_access expected = { a: 1, b: 2 }.with_indifferent_access |