对于迁移中的整数字段,如何:default => 0和:null => false不同?
如果我使用迁移来更新数据库,并添加一个像这样的整数字段:
t.integer :foo :default => 0, :null => false 数据库中现有logging和新logging的默认状态是什么? 我希望答案是: – 都将读回foo为0。
是默认=> 0必要的,如果我有:null => false?
试图了解两者之间的区别
  :null => false告诉你的数据库不接受NULL值。 
  :default => 0做两件事: 
-  当在查询中指定NULL或没有任何内容时,告诉数据库使用'0'作为默认值。
- 在创build新对象时,请指定rails使用“0”作为默认值。
第2点确保当你保存你的新对象,你实际上有一个有效的值。
 要回答你的问题:如果你不想在你的数据库中使用NULL值,请设置:null => false ,否则使用:default参数。 请注意,'0'和NULL不是一回事。 
 不具有NULL值对于build立索引或者是否需要向第三方提供直接的数据库访问非常重要。