diff options
author | Sean Griffin <sean@seantheprogrammer.com> | 2016-05-16 10:44:58 -0400 |
---|---|---|
committer | Sean Griffin <sean@seantheprogrammer.com> | 2016-05-16 10:44:58 -0400 |
commit | aa7ded6a362c609cd00b6c4ebc91b1d089bca4c4 (patch) | |
tree | 2369e02de2a0c8cc63f0a9b30a9aa8b60840df54 /activerecord | |
parent | e9cf20087b8db56f97c5dabbcccba6186df9648b (diff) | |
parent | 894facb1967c9f394be92ec699e4eafddc2aea52 (diff) | |
download | rails-aa7ded6a362c609cd00b6c4ebc91b1d089bca4c4.tar.gz rails-aa7ded6a362c609cd00b6c4ebc91b1d089bca4c4.tar.bz2 rails-aa7ded6a362c609cd00b6c4ebc91b1d089bca4c4.zip |
Merge pull request #23810 from xijo/fix_json_coder_when_mysql_strict_is_disabled
Fix bug in JSON deserialization when column default is an empty string
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/CHANGELOG.md | 4 | ||||
-rw-r--r-- | activerecord/lib/active_record/coders/json.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/coders/json_test.rb | 15 |
3 files changed, 20 insertions, 1 deletions
diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md index 0c14c0ea86..c677178253 100644 --- a/activerecord/CHANGELOG.md +++ b/activerecord/CHANGELOG.md @@ -1,2 +1,6 @@ +* Handle JSON deserialization correctly if the column default from database + adapter returns `''` instead of `nil`. + + *Johannes Opper* Please check [5-0-stable](https://github.com/rails/rails/blob/5-0-stable/activerecord/CHANGELOG.md) for previous changes. diff --git a/activerecord/lib/active_record/coders/json.rb b/activerecord/lib/active_record/coders/json.rb index 75d3bfe625..cb185a881e 100644 --- a/activerecord/lib/active_record/coders/json.rb +++ b/activerecord/lib/active_record/coders/json.rb @@ -6,7 +6,7 @@ module ActiveRecord end def self.load(json) - ActiveSupport::JSON.decode(json) unless json.nil? + ActiveSupport::JSON.decode(json) unless json.blank? end end end diff --git a/activerecord/test/cases/coders/json_test.rb b/activerecord/test/cases/coders/json_test.rb new file mode 100644 index 0000000000..d22d93d129 --- /dev/null +++ b/activerecord/test/cases/coders/json_test.rb @@ -0,0 +1,15 @@ +require "cases/helper" + +module ActiveRecord + module Coders + class JSONTest < ActiveRecord::TestCase + def test_returns_nil_if_empty_string_given + assert_nil JSON.load("") + end + + def test_returns_nil_if_nil_given + assert_nil JSON.load(nil) + end + end + end +end |