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

时间:2013-06-07 04:24:30

标签: ruby-on-rails ruby-on-rails-3 heroku devise

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

    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个数字。

查看我的记录:

enter image description here

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

1 个答案:

答案 0 :(得分:3)

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

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

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