aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorMatthew Draper <matthew@trebex.net>2015-03-23 14:47:24 +1030
committerMatthew Draper <matthew@trebex.net>2015-03-23 15:27:03 +1030
commit8b96c0b7a3510bc2a3ffe183318b7b6bcdf89ff3 (patch)
tree992dfe13f53b82c5fe882d9a43061ead19659f5d /activerecord/test/cases
parent0347280035db63a43e2103166469ffa93e8e1808 (diff)
downloadrails-8b96c0b7a3510bc2a3ffe183318b7b6bcdf89ff3.tar.gz
rails-8b96c0b7a3510bc2a3ffe183318b7b6bcdf89ff3.tar.bz2
rails-8b96c0b7a3510bc2a3ffe183318b7b6bcdf89ff3.zip
Make sure to persist a newly-nil serialized value
The subtype will (quite reasonably) ignore the possibility that it has `changed_in_place?` by becoming nil. Fixes #19467
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/serialized_attribute_test.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/activerecord/test/cases/serialized_attribute_test.rb b/activerecord/test/cases/serialized_attribute_test.rb
index e29f7462c8..7c92453ee3 100644
--- a/activerecord/test/cases/serialized_attribute_test.rb
+++ b/activerecord/test/cases/serialized_attribute_test.rb
@@ -264,4 +264,14 @@ class SerializedAttributeTest < ActiveRecord::TestCase
Topic.serialize(:content, Regexp)
end
end
+
+ def test_newly_emptied_serialized_hash_is_changed
+ Topic.serialize(:content, Hash)
+ topic = Topic.create(content: { "things" => "stuff" })
+ topic.content.delete("things")
+ topic.save!
+ topic.reload
+
+ assert_equal({}, topic.content)
+ end
end