Rails 迁移返回索引太长

Rails migration returning index too long

下面是我定义的迁移文件,用于重命名 schooling_document_types_managing_areas table 中的列,但问题是当我 运行 迁移时我收到错误 Index name is too长;限制为 63 个字符。然后我尝试了,比如

rename_column :schooling_document_types_managing_areas, :service_id, :managing_area_id, name: :index_schooling_documents_on_managing_area

然后 returns

ArgumentError:参数数量错误(给定 4,预期 3)。

知道我错在哪里

class RenameColumnName < ActiveRecord::Migration[5.1]
  def up
    rename_column :schooling_document_types_managing_areas, :service_id, :managing_area_id
  end

  def down
    rename_column :schooling_document_types_managing_areas, :managing_area_id, :service_id
  end
end

删除索引并重新添加怎么样?

def change
  remove_index :schooling_document_types_managing_areas, name: :index_schooling_document_types_managing_areas_on_service_id
  rename_column :schooling_document_types_managing_areas, :service_id, :managing_area_id
  add_index :schooling_document_types_managing_areas, name: :index_schooling_documents_on_managing_area
end

此外,我不确定您生产的 service_id 字段数据的性质,但请记住,只需重命名 isn't the safest way 以防有人在使用您的应用程序您 运行 迁移的确切时刻。