Sha256: 5d1611d9681f9a31c931b3fbed5f00820e189341a4dc4964ac64d66331284964
Contents?: true
Size: 1.24 KB
Versions: 8
Compression:
Stored size: 1.24 KB
Contents
module ForestLiana class SchemaUtils def self.associations(active_record_class) active_record_class .reflect_on_all_associations .select {|a| !polymorphic?(a)} end def self.one_associations(active_record_class) self.associations(active_record_class).select do |x| [:has_one, :belongs_to].include?(x.macro) end end def self.find_model_from_table_name(table_name) model = nil ActiveRecord::Base.subclasses.each do |subclass| if subclass.abstract_class? model = self.find_model_from_abstract_class(subclass, table_name) elsif subclass.table_name == table_name model = subclass end break if model end model end def self.tables_names ActiveRecord::Base.connection.tables end private def self.polymorphic?(association) association.options[:polymorphic] end def self.find_model_from_abstract_class(abstract_class, table_name) abstract_class.subclasses.find do |subclass| if subclass.abstract_class? return self.find_model_from_table_name(subclass, table_name) else subclass.table_name == table_name end end end end end
Version data entries
8 entries across 8 versions & 1 rubygems