class AbstractImporter::Collection

Public Class Methods

new(name, scope, options=nil) click to toggle source
Calls superclass method
# File lib/abstract_importer/collection.rb, line 4
def initialize(name, scope, options=nil)
  super name, scope.model, scope.table_name, scope, options
end

Public Instance Methods

association_attrs() click to toggle source
# File lib/abstract_importer/collection.rb, line 8
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
has_legacy_id?() click to toggle source
# File lib/abstract_importer/collection.rb, line 27
def has_legacy_id?
  @has_legacy_id ||= model.column_names.member?("legacy_id")
end