我正在做RoR教程,我们可以在应用程序中添加,更新,删除用户详细信息,同时id会自动定义用户,但是一旦我们删除了用户详细信息,那么对于该ID,它会显示找不到的记录。 我们可以再次使用该ID吗?
答案 0 :(得分:7)
从您的评论中看起来,您尝试通过在释放后重新使用较低值ID来节省使用高价值ID。一般来说,这不是一个好主意。
您在顶端用完ID的可能性很小(如果您继续使ID列接受更大的整数,则为零)但是重新分配ID可能会让您面临问题。例如,如果您想删除用户但保留他们创建的内容(例如博客帖子),则重新分配ID将意味着新ID所有者成为这些旧评论的所有者。
这感觉很浪费,但最好的办法就是留下旧的,空置的ID空置并吃掉新的ID。
答案 1 :(得分:0)
你可以使用这样的东西(Rails 3语法)
@user = User.find_by_id(params[:id]) || User.where("id > ", params[:id]).first || User.where("id < ", params[:id]).last
答案 2 :(得分:0)
我不建议重新使用唯一 ID。
首先,问问自己为什么要为用户分配唯一的ID:
所以,如果你删除了一个用户 - 会发生什么?
在我写的几乎每个应用程序中,用户总是留下痕迹。来自曾经暴露于互联网的URL(由google索引)或来自该用户的数据(保存为记录(订单等))。
重用用户ID会导致问题 - 因此可以重构应用程序以应对这些问题。在99%的这些案例中,最简单的解决方案是继续为这些用户生成新的唯一ID。
在某些情况下,您需要保留已删除用户的数据(例如,金融系统和网上商店是很好的例子)。这将在删除用户后保持唯一ID的存在 - 您无法重复使用它。
TL; DR:可以重用唯一ID,但会出现问题。解决这些问题的最简单方法是生成新的唯一ID。
作为补充说明,唯一ID不必是自动递增的整数。