1

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

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

查看我的记录,我有:

在此处输入图像描述

知道是什么导致了增量的巨大差距吗?用户无法删除他们的帐户。

4

1 回答 1

3

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

不可能确切地说出来,但我的猜测是所有用户之间的创建和由于一些事务错误3061被回滚。您可能需要交叉检查您的存储库提交,以查看您是否对User模型进行了任何修改,这些修改可能对应于没有用户提交到数据库的时间范围。

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

于 2013-06-07T05:02:49.977 回答