rails如何为新模型/记录提供ID?

时间:2011-07-18 21:52:20

标签: ruby-on-rails-3 activerecord rails-models

activerecord如何为新创建的记录分配ID? ID值似乎到处都是。有时它们是顺序的,但有时它们似乎是某种哈希。 有没有办法控制行为?

1 个答案:

答案 0 :(得分:1)

在关系数据库中,您会看到ID通常是顺序的。在具有Rails的这些数据库中,这恰好是一个名为id的自动递增字段。这是99%的情况,这意味着99%的时间你可以期望看到它以这种方式完成。这是理智的方式。

但是,在某些情况下,数据库中的“id”字段可能不会自动递增,而是可能是字符串。在我正在使用的数据库中,id字段被称为client_id,是一个6个字符的字符串,例如“RAB001”,需要由代码本身手动分配。这是由于我们支持的遗留系统,我们无法解决这个问题。它就是这样的。

在其他数据库(如Mongoid)中,再次自动生成ID。这里有一点不同:它们不是自动递增数字而是哈希。在Mongo数据库中,我碰巧有用,对象的_id字段之一(注意下划线)是这个可爱,易于理解的 1 哈希:4e22b5812f8b7d6f6d000001。这是由Mongo自动生成的,除了当我需要找到一个对象并且没有其他方法可以通过另一个唯一值找到它时,我并不在乎它是什么。

我建议坚持使用自动生成的ID系统,无论是PostgreSQL或MySQL等传统数据库系统提供的东西,还是Mongo的东西。

您需要手动为记录生成主键的任何系统都需要在其上标记一个巨大的“HERE BE DRAGONS”标签,并且应该像硝化甘油或similarly to this apt analogy一样处理。 如果可以,请避免使用此系统。


1 我在这里讽刺。