Module: ActiveRecord::ModelSchema

Extended by:
ActiveSupport::Concern
Included in:
Base
Defined in:
lib/active_record/model_schema.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Class Method Details

.derive_join_table_name(first_table, second_table) ⇒ Object

Derives the join table name for first_table and second_table. The table names appear in alphabetical order. A common prefix is removed (useful for namespaced models like Music::Artist and Music::Record):

artists, records => artists_records
records, artists => artists_records
music_artists, music_records => music_artists_records
music.artists, music.records => music.artists_records


196
197
198
# File 'lib/active_record/model_schema.rb', line 196

def self.derive_join_table_name(first_table, second_table) # :nodoc:
  [first_table.to_s, second_table.to_s].sort.join("\0").gsub(/^(.*[_.])(.+)\0\1(.+)/, '\1\2_\3').tr("\0", "_")
end