ruby-on-rails – 如何:default => 0和:null => false不同于迁移中的整数字段?

如果我使用迁移更新数据库,并且我添加一个整数字段如下:

t.integer :foo :default => 0, :null => false

数据库中现有和新记录的默认状态是什么?我希望答案是:
– 两者都会读回foo为0。

是default => 0必要,如果我有:null =>假?

只是试图理解两者之间的区别…

:null => false告诉你的数据库不接受NULL值。

:default => 0做两件事:

>当查询中指定NULL或nothing时,告诉数据库使用“0”作为默认值。
>告诉rails在创建一个新对象时使用’0’作为默认值。

点2确保在保存新对象时,实际上有一个有效的值。

回答你的问题:如果你不想在你的数据库中的NULL值,设置:null => false,否则只需使用:default参数。注意,’0’和NULL不是相同的东西。

没有NULL值可能对于建立索引或者需要为第三方提供直接的数据库访问很重要。

http://stackoverflow.com/questions/4012871/how-do-default-0-and-null-false-differ-for-integer-fields-in-migrations

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:ruby-on-rails – 如何:default => 0和:null => false不同于迁移中的整数字段?