2011-03-23 81 views
1

我正在做RoR教程,其中我们可以在应用程序中添加,更新,删除用户详细信息,同时一个id用用户自动定义,但是一旦我们删除了用户详细信息,那么对于该id它就会显示找不到记录。 我们可以再次使用该ID吗?我们可以再次使用记录已被删除的ID吗?

+1

为什么你想要重用一个ID? – idlefingers 2011-03-23 10:20:34

+0

类似于如果我删除了很多记录,然后而不是评估**用户/ 4 **我将不得不使用用户/ 7 – Pisto 2011-03-23 10:24:41

+0

那么你是说用户/ 4将会是用户/ 7上显示的用户?那么,它还没有被删除?我可能会很简单,但这对我来说毫无意义。 – idlefingers 2011-03-23 10:27:24

回答

6

从您的意见,它看起来像你想,以节省通过重复使用较低的值ID他们”后使用高值ID已被释放。一般来说这不被认为是一个好主意。

您将在最高端使用ID的可能性很小(如果您不断让您的ID列接受较大的整数,则为零),但重新分配ID可能会让您面临问题。例如,如果您想删除一个用户但保留他们创建的内容(例如博客帖子),那么重新分配这些ID将意味着新的ID所有者成为这些旧评论的所有者。

这感觉很浪费,但最好的办法就是留下旧的,空置的ID空置,并吃掉新的。

0

您可以使用这样的事情(Rails 3的语法)

@user = User.find_by_id(params[:id]) || User.where("id > ", params[:id]).first || User.where("id < ", params[:id]).last 
+0

老兄,这不是一个技术问题,这是一个教育问题。这基本上是一个错误的方法,所以代码不是答案。 – 2011-03-23 12:36:35

+0

我明白了。其实当我阅读问题时,我并不是全部理解,所以我只是想象是否要搜索最接近的用户来删除一个 – fl00r 2011-03-23 12:38:29

0

我不建议重新使用唯一 ID's。

首先,问自己你为什么把唯一的ID的用户:

  • 唯一识别用户
  • 要创建独特网址,用户的资源
  • 要链接的其他对象(订单,博客文章,游戏数据)具体用户

那么,如果你删除了一个用户 - 会发生什么?

几乎在我编写用户的每个应用程序中都会留下痕迹。无论是来自曾经暴露于互联网的URL(想法用谷歌索引),还是来自该用户的记录(订单等)数据。

重复使用用户ID会导致问题 - 因此会重构应用程序以解决这些问题。在这些案例中,有99%是最简单的解决方案,它只是为这些用户持续生成新的唯一ID。

还有一些情况需要保留已删除用户的数据(例如,财务系统和网上商店是很好的例子)。这会在用户被删除后保持唯一的ID存活 - 你不能重用它。

TL; DR:重复使用唯一的ID是可能的,但会带来问题。解决这些问题最简单的解决方案是生成新的唯一ID。

作为补充说明,唯一ID不一定是自动递增整数。

相关问题