如何在Rails迁移中将可空列更改为不可空列?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

我在之前的迁移中创建了一个日期列,并将其设置为空。现在我想改变它不可空。假设数据库中有空行,我该如何去做这件事?如果他们目前为空,我可以将这些列设置为Time.now。

提问于
用户回答回答于

如果你在迁移中这样做,那么你可能会这样做:

# Make sure no null value exist
MyModel.update_all({ date_column: Time.now }, { date_column: nil })

# Change the column to not allow null
change_column :my_models, :date_column, :datetime, null: false
用户回答回答于

在Rails 4中,这是一个更好的解决方案(DID):

change_column_null :my_models, :date_column, false

以确保不存在与null该栏中的值:

MyModel.update_all({ date_column: Time.now }, { date_column: nil })

扫码关注云+社区