加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 02:40:24 所属栏目:百科 来源:网络整理
导读:我不太明白需要隐藏Rails中id列的存在. 它既不反映在迁移文件中,也不反映在schema.rb文件中. 新手无法知道默认情况下已将名为id的列创建为主键. 除非他们去检查数据库中表的实际模式(rails dbconsole). 我可以在迁移文件和schema.rb中看到默认包含的时间戳宏
我不太明白需要隐藏Rails中id列的存在.
它既不反映在迁移文件中,也不反映在schema.rb文件中.
新手无法知道默认情况下已将名为id的列创建为主键.
除非他们去检查数据库中表的实际模式(rails dbconsole).

我可以在迁移文件和schema.rb中看到默认包含的时间戳宏,它包含两个字段created_at和updated_at.在这里,开发人员至少得到一个线索. Rails也可以为id列做同样的事情.但事实并非如此.

为什么id列周围的秘密?它是着名的配置约定的一部分吗?或者它是所有MVC框架的标准吗?

解决方法

在数据库设计中,通常认为数字id是首选,因为

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

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

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

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

时间戳是不同的:这对于某些表来说很有意思,但对于相同的表,它根本不重要.它还取决于您的应用程序.

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

简而言之:imho从迁移中省略’id’并不是一个秘密,它只是为了让生活更轻松,为您节省更多的打字,并确保您遵循一个良好的约定,除非您明确不愿意.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读