如果我使用迁移来更新数据库,并像这样添加一个整数字段:
t.integer :foo :default => 0, :null => false
数据库中现有和新记录的默认状态是什么?我希望答案是: - 两者都将读取 foo 为 0。
如果我有 :null => false,那么是否需要默认值为 => 0?
只是想了解这两者之间的区别...
t.integer :foo :default => 0, :null => false
数据库中现有和新记录的默认状态是什么?我希望答案是: - 两者都将读取 foo 为 0。
如果我有 :null => false,那么是否需要默认值为 => 0?
只是想了解这两者之间的区别...
:null => false
告诉数据库不接受 NULL
值。
:default => 0
做了两件事:
第二点确保您保存新对象时实际上有一个有效的值。
回答您的问题:如果您不想在数据库中有 NULL
值,可以设置 :null => false
,否则只需使用 :default
参数。请注意,“0”和 NULL
不是相同的东西。
没有 NULL
值可能对索引目的很重要,或者如果您需要向第三方提供直接数据库访问。