gpt4 book ai didi

ruby-on-rails - :default => 0 and :null => false differ for integer fields in migrations? 怎么办

转载 作者:行者123 更新时间:2023-12-02 23:49:23 25 4
gpt4 key购买 nike

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

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

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

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

只是想了解两者之间的区别...

最佳答案

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

:default => 0 做了两件事:

  1. 当查询中没有指定 NULL 或未指定任何内容时,告诉数据库使用“0”作为默认值。
  2. 告诉 Rails 在创建新对象时使用“0”作为默认值。

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

回答您的问题:如果您不想在数据库中使用 NULL 值,请设置 :null => false,否则只需使用 :default 参数。请注意,“0”和 NULL 不是同一件事。

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

关于ruby-on-rails - :default => 0 and :null => false differ for integer fields in migrations? 怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4012871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com