diff options
author | Brian Abreu <brian@nuts.com> | 2016-06-28 18:32:49 -0700 |
---|---|---|
committer | Brian Abreu <brian@nuts.com> | 2016-12-09 08:30:41 -0500 |
commit | a5faf6fb7279ebd1fab92d51bcc705469b7b98d9 (patch) | |
tree | fd14dab86f7213ccb67e7ef0ab5b9a530b8aeb45 | |
parent | cfc126e150659f91ccc0892197e7825af7c7327b (diff) | |
download | rails-a5faf6fb7279ebd1fab92d51bcc705469b7b98d9.tar.gz rails-a5faf6fb7279ebd1fab92d51bcc705469b7b98d9.tar.bz2 rails-a5faf6fb7279ebd1fab92d51bcc705469b7b98d9.zip |
Correctly handle frozen options for ActiveRecord::Serialization#serializable_hash.
-rw-r--r-- | activerecord/lib/active_record/serialization.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/json_serialization_test.rb | 6 |
2 files changed, 3 insertions, 5 deletions
diff --git a/activerecord/lib/active_record/serialization.rb b/activerecord/lib/active_record/serialization.rb index 5a408e7b8e..db2bd0b55e 100644 --- a/activerecord/lib/active_record/serialization.rb +++ b/activerecord/lib/active_record/serialization.rb @@ -9,7 +9,7 @@ module ActiveRecord #:nodoc: end def serializable_hash(options = nil) - options = options.try(:clone) || {} + options = options.try(:dup) || {} options[:except] = Array(options[:except]).map(&:to_s) options[:except] |= Array(self.class.inheritance_column) diff --git a/activerecord/test/cases/json_serialization_test.rb b/activerecord/test/cases/json_serialization_test.rb index a2150483f3..f8120d582b 100644 --- a/activerecord/test/cases/json_serialization_test.rb +++ b/activerecord/test/cases/json_serialization_test.rb @@ -149,10 +149,8 @@ class JsonSerializationTest < ActiveRecord::TestCase end def test_serializable_hash_should_not_modify_options_in_argument - options = { only: :name } - @contact.serializable_hash(options) - - assert_nil options[:except] + options = { only: :name }.freeze + assert_nothing_raised { @contact.serializable_hash(options) } end end |