Sha256: 27d5e7e03262da77c379de51b4f9301f1489471a8901608a755b4d6680408df6

Contents?: true

Size: 664 Bytes

Versions: 10

Compression:

Stored size: 664 Bytes

Contents

module AbstractImporter
  class Mapping
    attr_reader :collection, :foreign_key, :depends_on

    def initialize(collection, association)
      @collection = collection
      @depends_on = association.table_name.to_sym
      @foreign_key = association.foreign_key.to_sym
    end

    def applicable?(attrs)
      attrs.key?(foreign_key)
    end

    def apply!(attrs)
      attrs[foreign_key] = apply(attrs)
    end

    def apply(attrs)
      collection.map_foreign_key(attrs[foreign_key], foreign_key, depends_on)
    end

    def inspect
      "#<#{self.class.name} #{self}>"
    end

    def to_s
      "#{collection.name}.#{foreign_key}"
    end

  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
abstract_importer-1.9.0 lib/abstract_importer/mapping.rb
abstract_importer-1.8.0 lib/abstract_importer/mapping.rb
abstract_importer-1.7.0 lib/abstract_importer/mapping.rb
abstract_importer-1.6.0 lib/abstract_importer/mapping.rb
abstract_importer-1.5.6 lib/abstract_importer/mapping.rb
abstract_importer-1.5.5 lib/abstract_importer/mapping.rb
abstract_importer-1.5.4 lib/abstract_importer/mapping.rb
abstract_importer-1.5.3 lib/abstract_importer/mapping.rb
abstract_importer-1.5.2 lib/abstract_importer/mapping.rb
abstract_importer-1.5.1 lib/abstract_importer/mapping.rb