ruby-on-rails - Rails 迁移返回索引太长
问题描述
下面是我为重命名 schooling_document_types_managing_areas 表中的列而定义的迁移文件,但问题是当我运行迁移时出现错误索引名称太长;限制为 63 个字符。然后我尝试了,比如
rename_column :schooling_document_types_managing_areas, :service_id, :managing_area_id, name: :index_schooling_documents_on_managing_area
然后它返回
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
领域的生产中数据的性质,但请记住,仅重命名并不是最安全的方式,以防有人在您运行的确切时刻使用您的应用程序你的迁移。
推荐阅读
- node.js - 获取勾选了 express js 复选框的项目的字段总和
- r - 检查列表之间的值并添加到 R 中的新列表的条件
- c - 停止用户为数组引入值
- c# - 具有相同标识符值的不同对象已与会话相关联:0,实体:AppCrashLogData - NHibernate
- java - 如何将视图添加到主活动中的多个布局
- javascript - JS 在可变元素集中旋转可变图像堆栈
- python - Web Scraping 'NoneType' 对象不可下标
- javascript - 在反应组件内部调用暂停函数但没有任何反应
- applescript - 在任何应用程序中通过 Automator 在 Applescript 中发送击键
- python - 为什么不能在条件语句的代码中排除 LCM 变量?