Method: AbstractImporter::Collection#association_attrs

Defined in:
lib/abstract_importer/collection.rb

#association_attrsObject



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 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