如何在Rails中重用已删除的模型ID号?

sen*_*hil 1 sql ruby-on-rails

说我有一个Post模型.当我删除上一篇文章"Post 24"时,我希望下一篇文章采用Post 24而不是Post 25的ID.

我想在视图中显示id,我不想丢失数字.我怎么做?

谢谢你的帮助.

Jai*_*yer 5

id的目的只不过是内部标识符.它根本不应公开使用.这不是Rails的事情,而是数据库问题.MySQL不会回收id,因为它可能会导致你的应用程序出现非常严重的并发症.如果删除了一条记录,它的id将被永久地放置,以便将来的记录不会被误认为是.

但是,有一种方法可以做你想要的.我相信你想要一个position整数列.将其添加到您的模型/表,然后安装acts_as_list插件.

按常规方式安装:

script/plugin install git://github.com/rails/acts_as_list.git
Run Code Online (Sandbox Code Playgroud)

然后在模型中添加"hook":

class Post < ActiveRecord::Base
  acts_as_list
end
Run Code Online (Sandbox Code Playgroud)

现在position,您的帖子模型的列将自动跟踪自己,没有序列间隙.如果您愿意,它甚至会为您提供一些方便的重新订购方法.