Ruby on rails 设计用户ID自动递增跳过多个数字
我有一段代码以编程方式创建了一个新的Desive用户:Ruby on rails 设计用户ID自动递增跳过多个数字,ruby-on-rails,ruby-on-rails-3,heroku,devise,Ruby On Rails,Ruby On Rails 3,Heroku,Devise,我有一段代码以编程方式创建了一个新的Desive用户: 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.err
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
我最近注意到,用户id
跳过了我记录中的大约30个数字
查看我的记录,我有:
你知道是什么导致了增量的巨大差距吗?用户无法删除其帐户。如果您部署在Heroku上,则您使用的是Postgres。在Postgres中,主键ID在线性自动递增序列中只分配一次。但在回滚事务的情况下,分配的id仍将标记为已使用,并且不会再次分配 无法确定,但我的猜测是,由于某些事务错误,
30
和61
之间所有用户的创建都被回滚。您可能希望对照存储库提交进行交叉检查,以查看您是否对用户
模型进行了任何修改,这些修改可能与没有用户提交到数据库的时间段相对应
基本上,事情在某一点上起了作用,然后就坏了,现在又开始起作用了。检查
User.find(29).created_at
和User.find(62).created_at
之间的时间段,并查看是否有任何提交可能影响了您的模型。运行User.count
时您得到了什么?另外,您使用的数据库是什么?您是否在用户
表上启用了事务?我们将在MUSS中看到您!嗯,我猜可能是这样的。这不是什么大不了的事,因为这个应用程序仍然运行良好,只是想知道原因!