我遵循了要进行的Rails项目的设置说明。但是,在创建数据库并使用bundle exec
运行迁移之后,db/schema.rb
发生了变化。主要变化是时间戳created_at
和updated_at
失去了null: false
约束。例如:
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
+ t.datetime "created_at"
+ t.datetime "updated_at"
该项目是Rails 4.2和Ruby 2.4.1。
但是,它最初是用Rails 3.2和Ruby 1.9.2编写的,因此有一些旧代码/配置在play(?)
中的可能性。
我正在使用PostgreSQL:'pg', '~> 0.17'
。
所以:有人知道为什么null: false
离开了架构吗?
我非常想保留null: false
约束,并且我想可以将它们重新添加到迁移中,但是我很困惑为什么约束从架构中消失了。
已修改为添加:
-在定义了t.timestamps
的迁移中,没有null: false
约束
-实际数据库中的字段没有null约束。
默认情况下,ActiveRecord的早期版本是否可以添加null约束?
我一直在寻找答案,但没有找到太多。 This rails问题报告了相同的内容,但对于Oracle。
在堆栈溢出问题上,mysql - Rails: differences in db/schema.rb - null: false at created_at/updated_at columns是相同的问题,但是建议的解决方案(删除数据库并重新创建)对我没有帮助。