index付け。挙動変更。

Railsのデフォルトの挙動が index__on_... なので、too long と怒られまくった件。
とりあえず、index というprefixもいらないだろうし、もそのテーブルに対するインデックス付けなので、いらない、ってことで。

オリジナルの実装が

module ActiveRecord
  module ConnectionAdapters
    module SchemaStatements
      def index_name(table_name, options) #:nodoc:
        if Hash === options # legacy support
          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
          index_name(table_name, :column => options)
        end
      end       
    end
  end
end

というわけで、

module ActiveRecord
  module ConnectionAdapters
    module SchemaStatements
      def index_name(table_name, options={})
        alias :org_index_name :index_name
        def index_name(table_name, options) #:nodoc:
          if Hash === options && options[:column]
            Array(options[:column]) * '_'
          else
            org_index_name(table_name, options)
          end
        end
      end
    end
  end
end

えいやっと、plugin として上書き。andもいらん。しかし、index_nameメソッドがpublicなのに、nodoc なのはなぜだw