Edited at

ActiveRecordのデフォルトのインデックス名が長いのが気になる

More than 5 years have passed since last update.

たとえばActiveRecordでusersテーブルのemailカラムにインデックスを張ると、デフォルトのインデックス名がindex_users_on_emailみたいな冗長な名前になるのがうざいのでデフォルトはもっとすっきりさせることにする。


config/initializers/ar_simple_index_name.rb

ActiveSupport.on_load :active_record do

module ActiveRecord::ConnectionAdapters

# simple index name
module SchemaStatements
def index_name_with_simple(table_name, options)
if Hash === options && options[:column]
Array.wrap(options[:column]) * '_and_'
else
index_name_without_simple(table_name, options)
end
end
alias_method_chain :index_name, :simple
end

end
end


こうしとくとusersテーブルのemailカラムにインデックスを張ると、デフォルトのインデックス名はemailになって、tigerカラムとbunnyカラムの複合キーのデフォルトのインデックス名もtiger_and_bunnyとすっきりしていい感じになる。