class ActiveRecordImporter::DataProcessor
Public Instance Methods
process()
click to toggle source
# File lib/active_record_importer/data_processor.rb, line 15 def process fetch_instance_attributes fetch_find_attributes create_instance end
Private Instance Methods
append_errors(error, rollback = false)
click to toggle source
# File lib/active_record_importer/data_processor.rb, line 97 def append_errors(error, rollback = false) return if error.blank? message = error.is_a?(Exception) ? error.message : error @row_errors = message fail ActiveRecord::Rollback if rollback end
attributes_without_state_machine_attrs()
click to toggle source
# File lib/active_record_importer/data_processor.rb, line 83 def attributes_without_state_machine_attrs instance_attrs.except(*state_machine_attr) end
create_instance()
click to toggle source
# File lib/active_record_importer/data_processor.rb, line 23 def create_instance ActiveRecord::Base.transaction do begin @instance = InstanceBuilder.new( importable: importable, insert_method: insert_method, find_attributes: find_attributes, instance_attrs: attributes_without_state_machine_attrs ).build methods_after_upsert true rescue => exception append_errors(exception, true) end end end
fetch_find_attributes()
click to toggle source
# File lib/active_record_importer/data_processor.rb, line 50 def fetch_find_attributes @find_attributes = Attribute::FindOptionsBuilder.new( importable: importable, find_options: find_options, attrs: instance_attrs ).build rescue => exception append_errors(exception) end
fetch_instance_attributes()
click to toggle source
# File lib/active_record_importer/data_processor.rb, line 42 def fetch_instance_attributes @instance_attrs = Attribute::AttributesBuilder.new( importable, row_attrs ).build rescue => exception append_errors(exception) end
methods_after_upsert()
click to toggle source
# File lib/active_record_importer/data_processor.rb, line 60 def methods_after_upsert return if instance.blank? || !instance.persisted? state_transitions run_after_save_callbacks end
run_after_save_callbacks()
click to toggle source
# File lib/active_record_importer/data_processor.rb, line 91 def run_after_save_callbacks return if skip_callbacks? ImportCallbacker.new(instance, after_save).call end
set_find_options()
click to toggle source
# File lib/active_record_importer/data_processor.rb, line 111 def set_find_options import.try(:find_options) || importer_options.find_options.join(',') end
set_insert_method()
click to toggle source
# File lib/active_record_importer/data_processor.rb, line 105 def set_insert_method @insert_method = import.try(:insert_method) @insert_method ||= importer_options.insert_method @insert_method ||= 'insert' end
skip_callbacks?()
click to toggle source
# File lib/active_record_importer/data_processor.rb, line 87 def skip_callbacks? after_save.blank? || instance.blank? || instance.new_record? end
state_transitions()
click to toggle source
# File lib/active_record_importer/data_processor.rb, line 73 def state_transitions return if state_machine_attr.blank? state_machine_attr.each do |attr| state = row_attrs[attr.to_sym] next if state.blank? || state == instance.send(attr) TransitionProcessor.new(instance, state, attr).transit end end