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 以防有人在使用您的应用程序您 运行 迁移的确切时刻。
下面是我定义的迁移文件,用于重命名 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 以防有人在使用您的应用程序您 运行 迁移的确切时刻。