module ActiveRecord::Migration::Compatibility::V7_0::LegacyIndexName
def expression_column_name?(column_name)
def expression_column_name?(column_name) column_name.is_a?(String) && /\W/.match?(column_name) end
def index_name_options(column_names)
def index_name_options(column_names) if expression_column_name?(column_names) column_names = column_names.scan(/\w+/).join("_") end { column: column_names } end
def legacy_index_name(table_name, options)
def legacy_index_name(table_name, options) if Hash === options if options[:column] "index_#{table_name}_on_#{Array(options[:column]) * '_and_'}" elsif options[:name] options[:name] else raise ArgumentError, "You must specify the index name" end else legacy_index_name(table_name, index_name_options(options)) end end