module Neo4Apis::ModelResolver
Public Class Methods
included(included_class)
click to toggle source
# File lib/neo4apis/model_resolver.rb, line 8 def self.included(included_class) included_class.send(:include, TableResolver) end
Public Instance Methods
apply_identified_model_associations!(model_class)
click to toggle source
# File lib/neo4apis/model_resolver.rb, line 32 def apply_identified_model_associations!(model_class) model_class.columns.each do |column| match = column.name.match(/^(.+)_id$/i) || column.name.match(/^(.+)id$/i) next if not match begin base = match[1].gsub(/ +/, '_').tableize if identify_table_name(tables, base.classify) && model_class.name != base.classify debug_log "Defining: belongs_to #{base.singularize.to_sym.inspect}, foreign_key: #{column.name.inspect}, class_name: #{base.classify.inspect}" model_class.belongs_to base.singularize.to_sym, foreign_key: column.name, class_name: base.classify end rescue UnfoundTableError nil end end end
apply_identified_primary_key!(model_class)
click to toggle source
# File lib/neo4apis/model_resolver.rb, line 55 def apply_identified_primary_key!(model_class) identity = if model_class.columns.map(&:type) == [:integer, :integer] model_class.columns.map(&:name) else ::ActiveRecord::Base.connection.primary_key(model_class.table_name) end identity ||= identify_primary_key(model_class.column_names, model_class.name) model_class.primary_key = identity if identity end
apply_identified_table_name!(model_class)
click to toggle source
# File lib/neo4apis/model_resolver.rb, line 50 def apply_identified_table_name!(model_class) identity = identify_table_name(tables, model_class.name) model_class.table_name = identity if identity end
get_model(model_or_table_name)
click to toggle source
# File lib/neo4apis/model_resolver.rb, line 12 def get_model(model_or_table_name) get_model_class(model_or_table_name).tap do |model_class| if options[:identify_model] apply_identified_table_name!(model_class) apply_identified_primary_key!(model_class) apply_identified_model_associations!(model_class) end end end
get_model_class(model_or_table_name)
click to toggle source
# File lib/neo4apis/model_resolver.rb, line 22 def get_model_class(model_or_table_name) return model_or_table_name if model_or_table_name.is_a?(Class) && model_or_table_name.ancestors.include?(::ActiveRecord::Base) model_class = model_or_table_name.gsub(/\s+/, '_') model_class = model_or_table_name.classify unless model_or_table_name.match(/^[A-Z]/) model_class.constantize rescue NameError Object.const_set(model_class, Class.new(::ActiveRecord::Base)) end