class ActiveRecord::Type::Json
Constants
- JSON_ENCODER
Public Instance Methods
# File activerecord/lib/active_record/type/json.rb, line 38 def accessor ActiveRecord::Store::StringKeyedHashAccessor end
# File activerecord/lib/active_record/type/json.rb, line 34 def changed_in_place?(raw_old_value, new_value) deserialize(raw_old_value) != new_value end
# File activerecord/lib/active_record/type/json.rb, line 14 def deserialize(value) return value unless value.is_a?(::String) begin ActiveSupport::JSON.decode(value) rescue JSON::ParserError => e # NOTE: This may hide json with duplicate keys. We don't really want to just ignore it # but it's the best we can do in order to still allow updating columns that somehow already # contain invalid json from some other source. # See https://github.com/rails/rails/pull/55536 ActiveSupport.error_reporter.report(e, source: "application.active_record") nil end end
# File activerecord/lib/active_record/type/json.rb, line 30 def serialize(value) JSON_ENCODER.encode(value) unless value.nil? end
# File activerecord/lib/active_record/type/json.rb, line 10 def type :json end