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