Presence:true 对比 null:false 迁移 table

Presence:true vs. null:false in migration table

我正在处理一个小组项目,一位团队成员建议将 presence:true 添加到迁移文件而不是 null:false

例如:

create_table :item do |t|
  t.string :name, presence:true 

对比

create_table :item do |t|
  t.string :name, null:false

我只在迁移文件中看到 null:false,想知道您是否真的可以将 presence:true 添加到迁移中而不是 null:false,或者如果 presence:true 应该只是模型中的验证。如果是这样,哪个是最佳做法?

谢谢!

我想这取决于您使用的数据库以及它支持的关键字。 因此,如果您使用的数据库支持关键字 'presence:true',则可以使用它。

然而,最佳做法是使用 null:false,我从未见过其他任何东西。

另外,Rails针对这种情况有一个特殊的迁移方法,叫做change_column_null http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_column_null

希望对你有用。