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