class ActiveRecordImporter::Attribute::AttributesBuilder

Attributes

importable[R]
processed_attrs[R]
row_attrs[R]

Public Class Methods

new(importable, row_attrs) click to toggle source
# File lib/active_record_importer/attribute/attributes_builder.rb, line 14
def initialize(importable, row_attrs)
  @importable = importable
  @row_attrs = row_attrs
  @processed_attrs = {}
end

Public Instance Methods

build() click to toggle source
# File lib/active_record_importer/attribute/attributes_builder.rb, line 20
def build
  force_encode_attributes
  fetch_time_attributes
  processed_attrs
end

Private Instance Methods

default_attrs() click to toggle source
# File lib/active_record_importer/attribute/attributes_builder.rb, line 28
def default_attrs
  def_attrs = { importing: true }
  default_attributes.each do |key, value|
    def_attrs[key] = fetch_value(value)
  end
end
fetch_time_attributes() click to toggle source
# File lib/active_record_importer/attribute/attributes_builder.rb, line 39
def fetch_time_attributes
  @processed_attrs.merge!(time_attributes(processed_attrs))
end
fetch_value(value) click to toggle source
# File lib/active_record_importer/attribute/attributes_builder.rb, line 43
def fetch_value(value)
  case value
    when Proc
      value.call(row_attrs)
    when Symbol
      importable.send(value, row_attrs)
    else
      value
  end
end
force_encode_attributes() click to toggle source
# File lib/active_record_importer/attribute/attributes_builder.rb, line 35
def force_encode_attributes
  @processed_attrs = force_utf8_encode(merged_attributes)
end
has_column?(column) click to toggle source
# File lib/active_record_importer/attribute/attributes_builder.rb, line 63
def has_column?(column)
  return if column.blank?
  importable_columns.include?(column.to_sym)
end
merged_attributes() click to toggle source
# File lib/active_record_importer/attribute/attributes_builder.rb, line 54
def merged_attributes
  attributes = row_attrs.slice(*importable_columns)
  row_attrs = attributes.inject({}) do |row_attrs, key_value|
    row_attrs[key_value.first] = key_value.last if key_value.last.present?
    row_attrs
  end
  default_attrs.merge(row_attrs)
end