class JsonSti::ClassMasterList
Public Class Methods
base_class_list()
click to toggle source
# File lib/json_sti/class_master_list.rb, line 14 def self.base_class_list # a list of STI base classes which have their own tables @@base_class_list ||= build_base_class_list end
relations_lookup()
click to toggle source
# File lib/json_sti/class_master_list.rb, line 8 def self.relations_lookup # a lookup table including the subclasses of each baseclasses # and what relationships each STI class has to other STI classes @@relations_lookup ||= build_relations_lookup end
sti_base_class_list()
click to toggle source
# File lib/json_sti/class_master_list.rb, line 3 def self.sti_base_class_list # a list of STI base classes which have their own tables @@sti_base_class_list ||= build_sti_base_class_list end
Private Class Methods
build_base_class_list()
click to toggle source
# File lib/json_sti/class_master_list.rb, line 31 def self.build_base_class_list models = ActiveRecord::Base. descendants. map(&:name). reject { |klass| klass.include?("::") }. reject { |klass| klass.include?("HABTM") }. reject { |klass| klass.include?("WP") }. map(&:underscore). map(&:to_sym). tap { |models| models.delete :application_record} end
build_members_list_for_class(class_name)
click to toggle source
# File lib/json_sti/class_master_list.rb, line 67 def self.build_members_list_for_class(class_name) klass = class_name.to_s.camelize.constantize members = klass.descendants.map(&:to_s). map{ |descendant| descendant.gsub("#{class_name.to_s.camelize}::", "") }. map(&:underscore). map(&:to_sym) @@relations_lookup[class_name][:members] = members end
build_relation_list_for_class(class_name)
click to toggle source
# File lib/json_sti/class_master_list.rb, line 55 def self.build_relation_list_for_class(class_name) klass = class_name.to_s.camelize.constantize associations = klass.reflect_on_all_associations relation_list = associations.map(&:class_name). map(&:to_s). map(&:underscore). map(&:to_sym) @@relations_lookup[class_name][:relationships] = (relation_list & JsonSti::ClassMasterList.sti_base_class_list) end
build_relations_lookup()
click to toggle source
# File lib/json_sti/class_master_list.rb, line 43 def self.build_relations_lookup @@relations_lookup = {} base_class_list.each do |class_name| @@relations_lookup[class_name] = {} build_relation_list_for_class(class_name) build_members_list_for_class(class_name) end @@relations_lookup end
build_sti_base_class_list()
click to toggle source
# File lib/json_sti/class_master_list.rb, line 21 def self.build_sti_base_class_list ObjectSpace. each_object(Class). select { |klass| klass.included_modules.include? JsonSti }. map(&:to_s). reject { |klass| klass.include?("::") }. map(&:underscore). map(&:to_sym) end