Methods
Included Modules
Constants
JSON_ENCODER | = | ActiveSupport::JSON::Encoding.json_encoder.new(escape: false) |
Instance Public methods
accessor()
📝 Source code
# File activerecord/lib/active_record/type/json.rb, line 38
def accessor
ActiveRecord::Store::StringKeyedHashAccessor
end
🔎 See on GitHub
changed_in_place?(raw_old_value, new_value)
📝 Source code
# 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
🔎 See on GitHub
deserialize(value)
📝 Source code
# 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
🔎 See on GitHub
serialize(value)
📝 Source code
# File activerecord/lib/active_record/type/json.rb, line 30
def serialize(value)
JSON_ENCODER.encode(value) unless value.nil?
end
🔎 See on GitHub
type()
📝 Source code
# File activerecord/lib/active_record/type/json.rb, line 10
def type
:json
end
🔎 See on GitHub