我发现了几个关于编辑迁移的类似问题,但无法解决这个问题。我进行了rails迁移,然后打开了迁移文件并在该字段中添加了默认值选项。然后运行rake db:migrate。默认值按预期填充。然后稍后进行一些迁移,我决定要删除默认值选项。我怎么做?
如果这是我最后一次迁移,我会使用db:rollback并重新创建,但由于之前完成了一些迁移,我不知道如何解决这个问题。
感谢帮助。
答案 0 :(得分:41)
创建新迁移并使用change_column_default
。
http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_column_default
为列设置新的默认值:
change_column_default(:suppliers, :qualification, 'new') change_column_default(:accounts, :authorized, 1)
将默认值设置为nil会有效地删除默认值:
change_column_default(:users, :email, nil)
答案 1 :(得分:11)
传递包含:from
和:to
的哈希值会使此更改成为可逆迁移:
change_column_default(:posts, :state, from: nil, to: "draft")
因此我建议尽可能使用此格式。