怎么办:默认=> 0 和 :null => false 迁移中的整数字段有何不同?

发布于 2024-09-29 02:13:46 字数 235 浏览 4 评论 0原文

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

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

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

默认 => 0 必要,如果我有 :null =>错误的?

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

If I use a migration to update a database, and I add an integer field like this:

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

What is the default state of existing and new records in the database? I hoping the answer is:
- Both will read back foo as 0.

Is default => 0 necessary, if I have :null => false?

Just trying to understand the difference between the two...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北方的韩爷 2024-10-06 02:13:48

<代码>:空=> false 告诉您的数据库不接受 NULL 值。

<代码>:默认=> 0 执行两件事:

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

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

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

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

:null => false tells your database not to accept NULL values.

:default => 0 does two things:

  1. Tell your database to use '0' as the default value when NULL or nothing is specified in a query.
  2. Tell rails to use '0' as a default value when creating a new object.

Point 2 makes sure that when you save your new object, you actually have a valid value in place.

To answer your question: If you don't want NULL values in your database, set :null => false, otherwise just use the :default parameter. Mind you, '0' and NULL are not the same things.

Not having NULL values might be important for indexing purposes or if you need to provide direct database access to a third party.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文