Sha256: 4d7655d5c736e989972917f6fb4da3fb769ec8154a2fa91d8a04c4b3f34000d1

Contents?: true

Size: 1.19 KB

Versions: 12

Compression:

Stored size: 1.19 KB

Contents

module AbstractImporter
  class Collection < Struct.new(:name, :model, :table_name, :scope, :options)

    def initialize(name, scope, options=nil)
      super name, scope.model, scope.table_name, scope, options
    end

    def association_attrs
      return @association_attrs if defined?(@association_attrs)

      # Instead of calling `tenant.people.build(__)`, we'll reflect on the
      # association to find its foreign key and its owner's id, so that we
      # can call `Person.new(__.merge(tenant_id: id))`.
      @association_attrs = {}
      association = scope.instance_variable_get(:@association)
      if association
        unless association.is_a?(ActiveRecord::Associations::HasManyThroughAssociation)
          @association_attrs.merge!(association.reflection.foreign_key.to_sym => association.owner.id)
        end
        if association.reflection.inverse_of && association.reflection.inverse_of.polymorphic?
          @association_attrs.merge!(association.reflection.inverse_of.foreign_type.to_sym => association.owner.class.name)
        end
      end
      @association_attrs.freeze
    end

    def has_legacy_id?
      @has_legacy_id ||= model.column_names.member?("legacy_id")
    end

  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

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