class ActiveRecordImporter::InstanceBuilder

Public Instance Methods

build() click to toggle source
# File lib/active_record_importer/instance_builder.rb, line 10
def build
  instance = initialize_instance
  process_data(instance)
end

Private Instance Methods

assign_attrs_and_save!(instance) click to toggle source
# File lib/active_record_importer/instance_builder.rb, line 41
def assign_attrs_and_save!(instance)
  instance.attributes = instance_attrs
  instance.save!
  instance
end
before_save_callback(instance) click to toggle source
# File lib/active_record_importer/instance_builder.rb, line 36
def before_save_callback(instance)
  return if before_save.blank?
  ImportCallbacker.new(instance, before_save).call
end
error_duplicate?(instance) click to toggle source
# File lib/active_record_importer/instance_builder.rb, line 51
def error_duplicate?(instance)
  instance.persisted? && error_duplicate?
end
initialize_instance() click to toggle source
# File lib/active_record_importer/instance_builder.rb, line 19
def initialize_instance
  return importable.new if insert?

  fail Errors::MissingFindByOption if find_attributes.blank?
  importable.find_or_initialize_by(find_attributes)
end
insert_method_inquiry() click to toggle source
# File lib/active_record_importer/instance_builder.rb, line 47
def insert_method_inquiry
  insert_method.inquiry
end
process_data(instance) click to toggle source
# File lib/active_record_importer/instance_builder.rb, line 29
def process_data(instance)
  fail Errors::DuplicateRecord if error_duplicate?(instance)

  before_save_callback(instance)
  assign_attrs_and_save!(instance)
end