aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorSean Griffin <sean@seantheprogrammer.com>2016-05-16 10:44:58 -0400
committerSean Griffin <sean@seantheprogrammer.com>2016-05-16 10:44:58 -0400
commitaa7ded6a362c609cd00b6c4ebc91b1d089bca4c4 (patch)
tree2369e02de2a0c8cc63f0a9b30a9aa8b60840df54 /activerecord
parente9cf20087b8db56f97c5dabbcccba6186df9648b (diff)
parent894facb1967c9f394be92ec699e4eafddc2aea52 (diff)
downloadrails-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.md4
-rw-r--r--activerecord/lib/active_record/coders/json.rb2
-rw-r--r--activerecord/test/cases/coders/json_test.rb15
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