class DutyFree::Column
Holds detail about each column as we recursively explore the scope of what to import
Attributes
import_template_as[RW]
name[RW]
obj_class[W]
pre_prefix[RW]
prefix[RW]
prefix_assocs[RW]
Public Class Methods
new(name, pre_prefix, prefix, prefix_assocs, obj_class, import_template_as)
click to toggle source
# File lib/duty_free/column.rb, line 11 def initialize(name, pre_prefix, prefix, prefix_assocs, obj_class, import_template_as) self.name = name self.pre_prefix = pre_prefix self.prefix = prefix self.prefix_assocs = prefix_assocs self.import_template_as = import_template_as self.obj_class = obj_class end
Public Instance Methods
path()
click to toggle source
# File lib/duty_free/column.rb, line 42 def path @path ||= ::DutyFree::Util._prefix_join([pre_prefix, prefix]).split('.').map(&:to_sym) end
titleize()
click to toggle source
# File lib/duty_free/column.rb, line 38 def titleize @titleize ||= to_sym.titleize end
to_s(mapping = nil)
click to toggle source
# File lib/duty_free/column.rb, line 20 def to_s(mapping = nil) # Crap way: # sql_col = ::DutyFree::Util._prefix_join([prefix_assocs.last&.klass&.table_name, name]) # Slightly less crap: # table_name = [prefix_assocs.first&.klass&.table_name] # alias_name = prefix_assocs.last&.plural_name&.to_s # table_name.unshift(alias_name) unless table_name.first == alias_name # sql_col = ::DutyFree::Util._prefix_join([table_name.compact.join('_'), name]) # Foolproof way, using the AREL mapping: this_pre_prefix = pre_prefix.tr('.', '_') this_pre_prefix << '_' unless pre_prefix.blank? sql_col = ::DutyFree::Util._prefix_join([mapping["#{this_pre_prefix}#{prefix}_"], name]) sym = to_sym.to_s sql_col == sym ? sql_col : "#{sql_col} AS #{sym}" end
to_sym()
click to toggle source
The snake-cased column name to be used for building the full list of template_columns
# File lib/duty_free/column.rb, line 47 def to_sym @to_sym ||= ::DutyFree::Util._prefix_join( [pre_prefix, prefix, ::DutyFree::Util._clean_name(name, import_template_as)], '_' ).tr('.', '_') end