たとえば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とすっきりしていい感じになる。