aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/type
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2017-03-07 16:42:14 +0900
committerRyuta Kamizono <kamipo@gmail.com>2017-05-30 18:26:03 +0900
commit1c4be603c121a8853a4f1d6c13cb91f9b66bef9e (patch)
treeb189e2cc2c8a1eaaa35b605e910818971b6208f0 /activerecord/lib/active_record/type
parent5d9d6a4fbf72029266bfa643929a9a80f9286fbe (diff)
downloadrails-1c4be603c121a8853a4f1d6c13cb91f9b66bef9e.tar.gz
rails-1c4be603c121a8853a4f1d6c13cb91f9b66bef9e.tar.bz2
rails-1c4be603c121a8853a4f1d6c13cb91f9b66bef9e.zip
Consolidate database specific JSON types to `Type::Json`
Diffstat (limited to 'activerecord/lib/active_record/type')
-rw-r--r--activerecord/lib/active_record/type/internal/abstract_json.rb37
-rw-r--r--activerecord/lib/active_record/type/json.rb28
2 files changed, 28 insertions, 37 deletions
diff --git a/activerecord/lib/active_record/type/internal/abstract_json.rb b/activerecord/lib/active_record/type/internal/abstract_json.rb
deleted file mode 100644
index a8d6a63465..0000000000
--- a/activerecord/lib/active_record/type/internal/abstract_json.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-module ActiveRecord
- module Type
- module Internal # :nodoc:
- class AbstractJson < ActiveModel::Type::Value # :nodoc:
- include ActiveModel::Type::Helpers::Mutable
-
- def type
- :json
- end
-
- def deserialize(value)
- if value.is_a?(::String)
- ::ActiveSupport::JSON.decode(value) rescue nil
- else
- value
- end
- end
-
- def serialize(value)
- if value.nil?
- nil
- else
- ::ActiveSupport::JSON.encode(value)
- end
- end
-
- def changed_in_place?(raw_old_value, new_value)
- deserialize(raw_old_value) != new_value
- end
-
- def accessor
- ActiveRecord::Store::StringKeyedHashAccessor
- end
- end
- end
- end
-end
diff --git a/activerecord/lib/active_record/type/json.rb b/activerecord/lib/active_record/type/json.rb
new file mode 100644
index 0000000000..c4732fe388
--- /dev/null
+++ b/activerecord/lib/active_record/type/json.rb
@@ -0,0 +1,28 @@
+module ActiveRecord
+ module Type
+ class Json < ActiveModel::Type::Value
+ include ActiveModel::Type::Helpers::Mutable
+
+ def type
+ :json
+ end
+
+ def deserialize(value)
+ return value unless value.is_a?(::String)
+ ActiveSupport::JSON.decode(value) rescue nil
+ end
+
+ def serialize(value)
+ ActiveSupport::JSON.encode(value) unless value.nil?
+ end
+
+ def changed_in_place?(raw_old_value, new_value)
+ deserialize(raw_old_value) != new_value
+ end
+
+ def accessor
+ ActiveRecord::Store::StringKeyedHashAccessor
+ end
+ end
+ end
+end