Module: ActiveRecord::MTI::ModelSchema::ClassMethods
- Defined in:
- lib/active_record/mti/model_schema.rb
Instance Method Summary collapse
-
#compute_table_name ⇒ Object
Computes and returns a table name according to default conventions.
-
#reset_table_name ⇒ Object
Computes the table name, (re)sets it internally, and returns it.
Instance Method Details
#compute_table_name ⇒ Object
Computes and returns a table name according to default conventions.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/active_record/mti/model_schema.rb', line 21 def compute_table_name base = base_class if self == base # Nested classes are prefixed with singular parent table name. if parent < Base && !parent.abstract_class? contained = parent.table_name contained = contained.singularize if parent.pluralize_table_names contained += '_' end "#{full_table_name_prefix}#{contained}#{undecorated_table_name(name)}#{full_table_name_suffix}" elsif uses_mti? # Nested classes are prefixed with singular parent table name. if superclass < Base && !superclass.abstract_class? contained = superclass.table_name contained = contained.singularize if superclass.pluralize_table_names contained += '/' end "#{full_table_name_prefix}#{contained}#{decorated_table_name(name)}#{full_table_name_suffix}" else # STI subclasses always use their superclass' table. superclass.table_name end end |
#reset_table_name ⇒ Object
Computes the table name, (re)sets it internally, and returns it.
10 11 12 13 14 15 16 17 18 |
# File 'lib/active_record/mti/model_schema.rb', line 10 def reset_table_name #:nodoc: self.table_name = if abstract_class? superclass == Base ? nil : superclass.table_name elsif superclass.abstract_class?# || superclass.using_multi_table_inheritance? superclass.table_name || compute_table_name else compute_table_name end end |