设计用户ID会在自动增量中跳过多个数字

我有一段代码,以编程方式创建一个新的设计用户:

user = User.new user.username = params[:username] user.email = params[:email] user.password = params[:password] if user.save render :json => user else render :json => user.errors end 

我最近注意到user id在我的记录中跳过了大约30个数字。

看着我的记录,我有:

在此处输入图像描述

知道什么可能导致增量的这个巨大差距? 用户无法删除其帐户。

如果您部署在Heroku上,那么您正在使用Postgres。 在Postgres中,主键id仅在线性自动递增序列中分配一次。 但是,如果事务被回滚,分配的ID 仍将被标记为已使用,并且不会再次分配。

最终无法确定,但我的猜测是,由于某些交易错误, 3061之间的所有用户的创建都被回滚。 您可能希望对存储库提交进行交叉检查,以查看是否对User模型进行了任何可能与未向用户提交数据库的时间范围相对应的修改。

基本上,事情在某一点上起作用,然后他们破了,现在他们再次工作。 检查User.find(29).created_atUser.find(62).created_at之间的时间段,看看是否有任何提交可能影响了您的模型。