Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何操作:默认值=>;0和:空=>;迁移中的整型字段是否为false?_Ruby On Rails_Null_Migration_Default - Fatal编程技术网

Ruby on rails 如何操作:默认值=>;0和:空=>;迁移中的整型字段是否为false?

Ruby on rails 如何操作:默认值=>;0和:空=>;迁移中的整型字段是否为false?,ruby-on-rails,null,migration,default,Ruby On Rails,Null,Migration,Default,如果我使用迁移来更新数据库,并添加如下整数字段: t.integer :foo :default => 0, :null => false 数据库中现有记录和新记录的默认状态是什么?我希望答案是: -两者都将foo读回为0 如果我有:null=>false,是否需要default=>0 只要试着理解这两者之间的区别…:null=>false告诉数据库不要接受null值 :默认值=>0做两件事: 当查询中未指定任何内容时,请告诉数据库使用“0”作为默认值 告诉rails在创建新对象时

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

t.integer :foo :default => 0, :null => false
数据库中现有记录和新记录的默认状态是什么?我希望答案是: -两者都将foo读回为0

如果我有:null=>false,是否需要default=>0


只要试着理解这两者之间的区别…

:null=>false
告诉数据库不要接受
null

:默认值=>0
做两件事:

  • 当查询中未指定任何内容时,请告诉数据库使用“0”作为默认值
  • 告诉rails在创建新对象时使用“0”作为默认值
  • 第2点确保在保存新对象时,实际上有一个有效的值

    回答您的问题:如果您不希望数据库中有
    NULL
    值,请设置
    :NULL=>false
    ,否则只需使用
    :default
    参数。请注意,'0'和
    NULL
    不是一回事


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

    这取决于您的数据库。不是栏杆。这是否意味着,如果在迁移之前我有一个现有的数据库记录,它将作为0读回?所以,如果我在一个旧记录上执行Table.value,value将==0?是的。如果您有一个包含
    NULL
    值的表列,但您设置了默认值,那么将返回该默认值。这是一个启发性的、有价值的信息:“没有NULL值可能对索引目的很重要,或者如果您需要向第三方提供直接数据库访问。”,即使这是一个简单的问题。@ahnbizcad不明白这一点,第三方的直接连接与不需要空值有什么关系?