gpt4 book ai didi

ruby-on-rails - 为什么 Rails 隐藏了 id 列的存在?

转载 作者:行者123 更新时间:2023-12-04 06:04:50 24 4
gpt4 key购买 nike

我不太明白需要隐藏 id 的存在Rails 中的列。
migration 中都没有反射(reflect)文件也不是 schema.rb文件。
新手无法知道名为 id 的列的事实。已默认创建为 primary key .
除非他们去检查数据库中表的实际模式( rails dbconsole )。

我可以看到 timestamps宏默认包含在迁移文件以及 schema.rb 中作为两个字段 created_atupdated_at .在这里,开发人员至少得到了一个线索。 Rails 可以为 id 做同样的事情列也是。但事实并非如此。

为什么要保密id柱子?是不是有名的一部分convention over configuration ?或者它是所有 MVC 框架的规范?

最佳答案

在数据库设计中,人们普遍认为首选数字 id,因为

  • 它们更容易索引,因此在创建链接(外键)时更容易“关注”或检查。
  • 编辑/更新记录时,您有一个唯一(且有效)的标识符

  • 因此,建议始终为所有表提供唯一的数字键。

    现在这个数字键对您的应用程序没有任何意义,它是您的数据库层的“实现细节”。还要确保每个表都有一个 id,除非您明确要求不要这样做。

    我认为这确实属于“约定优于配置”的名称:如果每个表都应该有一个 id,为什么要为每个表明确指定一个 id。

    时间戳是不同的:这对某些表很有趣,但对于相同的表,它根本不重要。这也取决于您的应用程序。

    请注意,这与 MVC 完全无关。 MVC 中的 M 是数据的容器,但在 MVC 中,模型如何填充实际上并不重要。换句话说:ORM 部分不是 MVC 的一部分。您将看到在大多数 MVC 实现中没有 ORM,或者绝对不像与 Rails 那样紧密集成。

    简而言之:恕我直言,从迁移中省略“id”并不是什么 secret ,它只是为了让生活更轻松,为您节省更多的打字时间,并且确保您遵循良好的约定,除非您明确不想这样做。

    关于ruby-on-rails - 为什么 Rails 隐藏了 id 列的存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22230215/

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