Sha256: ecda7a5abf0b0c2865e7d5029ed0d9a6e6896794f833170acb932ae41ff525e3

Contents?: true

Size: 651 Bytes

Versions: 3

Compression:

Stored size: 651 Bytes

Contents

# frozen_string_literal: true

require "active_job/serializers/object_serializer"

module AcidicJob
  module Serializers
    class NewRecordSerializer < ::ActiveJob::Serializers::ObjectSerializer
      def serialize(new_record)
        super(
          "class" => new_record.class.name,
          "attributes" => new_record.attributes
        )
      end

      def deserialize(hash)
        new_record_class = hash["class"].constantize
        new_record_class.new(hash["attributes"])
      end

      def serialize?(argument)
        defined?(::ActiveRecord) && argument.respond_to?(:new_record?) && argument.new_record?
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
acidic_job-1.0.0.rc1 lib/acidic_job/serializers/new_record_serializer.rb
acidic_job-0.9.0 lib/acidic_job/serializers/new_record_serializer.rb
acidic_job-0.8.8 lib/acidic_job/serializers/new_record_serializer.rb