Sha256: d7793bfc06ee8c29b591d31636296a04db852df61952a892d4b104ebd7270bcf

Contents?: true

Size: 1.24 KB

Versions: 9

Compression:

Stored size: 1.24 KB

Contents

require 'synchronisable/worker/base'

module Synchronisable
  module Worker
    # Responsible for record synchronization.
    #
    # @api private
    class Record < Base
      # Synchronizes record.
      def sync_record
        @synchronizer.with_record_sync_callbacks(@source) do
          log_info(@source.dump_message, :green)

          if @source.updatable?
            log_info("updating #{@source.model}: #{@source.local_record.id}", :blue)

            update_record
          else
            create_record_pair

            log_info("#{@source.model} (id: #{@source.local_record.id}) was created", :blue)
            log_info("#{@source.import_record.class}: #{@source.import_record.id} was created", :blue)
          end
        end
      end

      private

      def update_record
        @source.local_record.update_attributes!(@source.local_attrs)
      end

      def create_record_pair
        record = @source.model.create!(@source.local_attrs)
        @source.import_record = Import.create!(
          :synchronisable_id    => record.id,
          :synchronisable_type  => @source.model.to_s,
          :remote_id            => @source.remote_id.to_s,
          :attrs                => @source.local_attrs
        )
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
synchronisable-1.0.8 lib/synchronisable/worker/record.rb
synchronisable-1.0.7 lib/synchronisable/worker/record.rb
synchronisable-1.0.6 lib/synchronisable/worker/record.rb
synchronisable-1.0.5 lib/synchronisable/worker/record.rb
synchronisable-1.0.4 lib/synchronisable/worker/record.rb
synchronisable-1.0.3 lib/synchronisable/worker/record.rb
synchronisable-1.0.2 lib/synchronisable/worker/record.rb
synchronisable-1.0.1 lib/synchronisable/worker/record.rb
synchronisable-1.0.0 lib/synchronisable/worker/record.rb