mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #16162 from chancancode/fix_json_coder
Fixed JSON coder when loading NULL from DB
This commit is contained in:
parent
a66aeb84e2
commit
f4c8a4b71f
2 changed files with 19 additions and 1 deletions
|
@ -6,7 +6,7 @@ module ActiveRecord
|
|||
end
|
||||
|
||||
def self.load(json)
|
||||
ActiveSupport::JSON.decode(json)
|
||||
ActiveSupport::JSON.decode(json) unless json.nil?
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -81,6 +81,24 @@ class SerializedAttributeTest < ActiveRecord::TestCase
|
|||
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)
|
||||
|
|
Loading…
Reference in a new issue