Rails 4.2和Postgres:数据库迁移更改了schema.rb-null:从时间戳中删除false

时间:2018-09-27 21:29:03

标签: ruby-on-rails postgresql ruby-on-rails-4 database-migration

我遵循了要进行的Rails项目的设置说明。但是,在创建数据库并使用bundle exec运行迁移之后,db/schema.rb发生了变化。主要变化是时间戳created_atupdated_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是相同的问题,但是建议的解决方案(删除数据库并重新创建)对我没有帮助。

0 个答案:

没有答案
相关问题