Sha256: a3ebbc93900fa197b67cf52368a9ac04371c4ddd98bafced33e1db22feaa9fb5

Contents?: true

Size: 618 Bytes

Versions: 3

Compression:

Stored size: 618 Bytes

Contents

module HubLink
  class Insert
    def initialize(row:, target:)
      @row = row
      @target = target
    end

    def run
      record.update! importable_attributes
    end

    private

      def record
        target.find_or_initialize_by(primary_key => primary_key_value)
      end

      def primary_key_value
        row[primary_key]
      end

      def primary_key
        target.primary_key
      end

      def importable_attributes
        row.slice(*target_columns)
      end

      def target_columns
        target.columns.map(&:name).map(&:to_sym)
      end

      attr_reader :row, :target
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
hub_link-0.19.0 lib/hub_link/insert.rb
hub_link-0.18.0 lib/hub_link/insert.rb
hub_link-0.15.0 lib/hub_link/insert.rb