我有一段以编程方式创建新设计用户的代码:
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个数字。
查看我的记录:
知道什么可能导致增量中的这个巨大差距?用户无法删除其帐户。
答案 0 :(得分:3)
如果您部署在Heroku上,那么您正在使用Postgres。在Postgres中,主键id仅在线性自动递增序列中分配一次。但是,如果事务被回滚,分配的ID将仍然标记为已使用,并且不会再次分配。
无法确切地说出来,但我的猜测是由于某些交易错误导致30
和61
之间的所有用户的创建被回滚。您可能希望对存储库提交进行交叉检查,以查看是否对User
模型进行了任何修改,这些修改可能与没有用户提交到数据库的时间范围相对应。
基本上,事情在某一点上起作用,然后他们破了,现在他们再次工作。检查User.find(29).created_at
和User.find(62).created_at
之间的时间段,看看是否有任何提交可能影响了您的模型。