如何在rails上的ruby中重新创建相同的id对象

时间:2018-02-08 05:10:31

标签: ruby-on-rails ruby postgresql

我们知道id在数据库级别递增以保持唯一性但是如果不小心删除了任何ID,那么我们对生产环境无能为力? 任何人都可以帮助我理解当我们删除它时,有没有办法创建一个具有相同id的对象。

eg:- user = User.find 1    
     user.destroy 

现在,如果我发现User.find 1会给我一个错误,那么我想创建同一个id 1用户?这是可能的,因为我试图找到它,但还没找到

2 个答案:

答案 0 :(得分:1)

实际上它没有建议todo,因为ID在数据库级别增加以保持唯一性。

您可以指定ID,只需确保存在相同的ID即可。

unless Store.find_by(id: 2)
   s = Store.new
   s.id = 2
   #make sure dnt have any validations
   s.save #
end

可能您尝试使用.find(2)

它将返回ActiveRecord::RecordNotFound: Couldn't find User with 'id'=2

使用.find_by_id(2).find_by(id: 2)它将返回布尔值true || false

答案 1 :(得分:0)

Rails.root/log

中更新您的production.log

如果您可以更改为生产模式并使用rails console

首先,检查一下

irb(main)> User.where(id: 1).present?
=> true or false

如果输出为false,则用户id1的记录不存在,因此无法删除,并且您可以创建一个新ID到相同的id(但是id会自动创建为持续auto increment值)

else输出为true然后用户id1的记录被限制为约束外键(模型关联依赖也相同。),它不能被删除。所以检查数据库中的用户表(或用户模型关联)。