我们知道id
在数据库级别递增以保持唯一性但是如果不小心删除了任何ID,那么我们对生产环境无能为力?
任何人都可以帮助我理解当我们删除它时,有没有办法创建一个具有相同id的对象。
eg:- user = User.find 1
user.destroy
现在,如果我发现User.find 1
会给我一个错误,那么我想创建同一个id 1
用户?这是可能的,因为我试图找到它,但还没找到
答案 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
如果您可以更改为生产模式并使用rails console
首先,检查一下
irb(main)> User.where(id: 1).present?
=> true or false
如果输出为false,则用户id1的记录不存在,因此无法删除,并且您可以创建一个新ID到相同的id(但是id会自动创建为持续auto increment
值)
else输出为true然后用户id1的记录被限制为约束外键(模型关联依赖也相同。),它不能被删除。所以检查数据库中的用户表(或用户模型关联)。