instance method generate_index_name

Ruby on Rails 8.1.2

Since v7.1.6 Private

Available in: v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

generate_index_name(table_name, column)

No documentation comment.

Parameters

table_name req
column req
Source
# File activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb, line 1645
        def generate_index_name(table_name, column)
          name = "index_#{table_name}_on_#{Array(column) * '_and_'}"
          return name if name.bytesize <= max_index_name_size

          # Fallback to short version, add hash to ensure uniqueness
          hashed_identifier = "_" + OpenSSL::Digest::SHA256.hexdigest(name).first(10)
          name = "idx_on_#{Array(column) * '_'}"

          short_limit = max_index_name_size - hashed_identifier.bytesize
          short_name = name.truncate_bytes(short_limit, omission: nil)

          "#{short_name}#{hashed_identifier}"
        end

Defined in activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb line 1645 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveRecord::ConnectionAdapters::SchemaStatements

Type at least 2 characters to search.

↑↓ navigate · open · esc close