从Rails迁移中删除默认值

时间:2014-08-18 06:02:30

标签: ruby-on-rails-4 rails-migrations

我发现了几个关于编辑迁移的类似问题,但无法解决这个问题。我进行了rails迁移,然后打开了迁移文件并在该字段中添加了默认值选项。然后运行rake db:migrate。默认值按预期填充。然后稍后进行一些迁移,我决定要删除默认值选项。我怎么做?

如果这是我最后一次迁移,我会使用db:rollback并重新创建,但由于之前完成了一些迁移,我不知道如何解决这个问题。

感谢帮助。

2 个答案:

答案 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)

Rails 5 +

传递包含:from:to的哈希值会使此更改成为可逆迁移:

change_column_default(:posts, :state, from: nil, to: "draft")

因此我建议尽可能使用此格式。