Permalink
Browse files

Merge pull request #16162 from chancancode/fix_json_coder

Fixed JSON coder when loading NULL from DB
  • Loading branch information...
2 parents 136cbca + 5b1f2e9 commit 5de6ef8fff7df27ec3d6043b3c6d1ea154f1dc5d @chancancode chancancode committed Jul 14, 2014
@@ -6,7 +6,7 @@ def self.dump(obj)
end
def self.load(json)
- ActiveSupport::JSON.decode(json)
+ ActiveSupport::JSON.decode(json) unless json.nil?
end
end
end
@@ -91,6 +91,24 @@ def test_serialized_json_attribute_returns_unserialized_value
assert_equal(my_post.title, t.content["title"])
end
+ # This is to ensure that the JSON coder is behaving the same way as 4.0, but
+ # we can consider changing this in the future.
+ def test_json_db_null
+ Topic.serialize :content, JSON
+
+ # Force a row to have a database NULL instead of a JSON "null"
+ id = Topic.connection.insert "INSERT INTO topics (content) VALUES(NULL)"
+ t = Topic.find(id)
+
+ assert_nil t.content
+
+ t.save!
+
+ # On 4.0, re-saving a row with a database NULL will turn that into a JSON
+ # "null"
+ assert_equal 1, Topic.where('content = "null"').count
+ end
+
def test_serialized_attribute_declared_in_subclass
hash = { 'important1' => 'value1', 'important2' => 'value2' }
important_topic = ImportantTopic.create("important" => hash)

0 comments on commit 5de6ef8

Please sign in to comment.