remove_indexでnameオプションが無視される

https://github.com/mbleigh/acts-as-taggable-on

acts-as-taggable-onで使うテーブル名に、プレフィックを付けてmigrate:redoやったらdownの時にエラーになった。

Index name 'index_momiji_taggings_on_taggable_id_and_taggable_type_and_context' on table 'momiji_taggings' is too long; the limit is 64

「momiji」というプレフィックをつけたら上限を超えたみたい。
nameオプションから削除するインデックスは特定できているのになんで自動に作られるnameが出てくるのかよくわからない。

下記問題のmigrationファイル。

# This migration comes from acts_as_taggable_on_engine (originally 2)
class AddMissingUniqueIndices < ActiveRecord::Migration
  def self.up
    add_index :momiji_tags, :name, unique: true

    remove_index :momiji_taggings, :tag_id
    add_index :momiji_taggings,
              [:tag_id, :taggable_id, :taggable_type, :context, :tagger_id, :tagger_type],
              unique: true, name: 'taggings_idx'
  end

  def self.down
    remove_index :momiji_tags, :name

    remove_index :momiji_taggings, name: 'taggings_idx'
    add_index :momiji_taggings, :tag_id
    add_index :momiji_taggings, [:taggable_id, :taggable_type, :context]
  end
end

ちなみに、ActsAsTaggableOnへマッピングするテーブルを変更する場合はclass_evalやったら普通にできた。
config/initializers/とか適当におけばいい。

ActsAsTaggableOn::Tagging.class_eval do
  self.table_name = :momiji_taggings
end

ActsAsTaggableOn::Tag.class_eval do
  self.table_name = :momiji_tags
end

プレフィックはつけないほうがいいという知見を得た。