class WhoAmI::Function::ResolveTable
Public Class Methods
new(known_tables)
click to toggle source
# File lib/who_am_i/function/resolve_table.rb, line 6 def initialize(known_tables) @known_tables = known_tables end
Public Instance Methods
call(extracted_class)
click to toggle source
# File lib/who_am_i/function/resolve_table.rb, line 10 def call(extracted_class) set_table_name_for(extracted_class) end
Private Instance Methods
guess_table_from(class_name)
click to toggle source
# File lib/who_am_i/function/resolve_table.rb, line 44 def guess_table_from(class_name) loop do guess = class_name .underscore .pluralize .sub(%r{\A/}, "") .sub(%r{/}, "_") if @known_tables.include?(guess) break guess end if class_name !~ /::/ break end class_name = class_name.split("::", 2).last end end
set_table_name_for(extracted_class)
click to toggle source
# File lib/who_am_i/function/resolve_table.rb, line 16 def set_table_name_for(extracted_class) if extracted_class.abstract_class? return end if extracted_class.table_name return end if extracted_class.resolved_superclass if !extracted_class.resolved_superclass.abstract_class? set_table_name_for(extracted_class.resolved_superclass) extracted_class.table_name = extracted_class.resolved_superclass.table_name return end end extracted_class.table_name = guess_table_from(extracted_class.class_name) if extracted_class.table_name.nil? extracted_class.skip("no table could be determined") end end