Class: CSVStepImporter::Model::Reflector

Inherits:
Node
  • Object
show all
Defined in:
lib/csv_step_importer/model/reflector.rb

Instance Attribute Summary

Attributes inherited from Node

#children, #env, #parent

Instance Method Summary collapse

Methods inherited from Node

#add_children, #build_env, #initialize, #run_validations!, #validate_children

Methods inherited from Base

#ancestors, #assign_attributes, #inspect, #persisted?, #save, #save!, set, #to_s, #update

Constructor Details

This class inherits a constructor from CSVStepImporter::Node

Instance Method Details

#create_or_updateObject



13
14
15
16
# File 'lib/csv_step_importer/model/reflector.rb', line 13

def create_or_update
  self.dao_ids = ids
  true
end

#dao_ids=(ids) ⇒ Object

set ids



41
42
43
44
45
46
47
# File 'lib/csv_step_importer/model/reflector.rb', line 41

def dao_ids=(ids)
  raise "Unable to find saved data. Please check your scope." unless ids.size == daos.size

  daos.each_with_index do |dao, index|
    dao.id = dao.value[:id] = ids[index]
  end
end

#find_ids_scopeObject



23
24
25
26
27
28
# File 'lib/csv_step_importer/model/reflector.rb', line 23

def find_ids_scope
  finder_scope
    .where(finder_key => finder_values)
    .order(["field(#{finder_key}, ?)", finder_values])
    .pluck(:id)
end

#finder_keyObject



18
19
20
21
# File 'lib/csv_step_importer/model/reflector.rb', line 18

def finder_key
  raise "not yet supported" unless finder_keys.size == 1
  finder_keys.first
end

#finder_valuesObject



30
31
32
33
34
# File 'lib/csv_step_importer/model/reflector.rb', line 30

def finder_values
  @finder_values ||= daos.collect do |dao|
    dao.value[finder_key]
  end
end

#idsObject



36
37
38
# File 'lib/csv_step_importer/model/reflector.rb', line 36

def ids
  @ids ||= find_ids_scope.to_a
end