我有一个名为“ Post”的模型。由于某些原因,我必须创建具有特定id
值的帖子。当我运行Post.last
时,它给我的id
值最高。但是,当我运行Post.create()
时,它尝试创建的id
比上一个没有指定id
创建的上一个的id
大1的Post
在我的数据库中没有指定id
的情况下创建的帖子数已达到我指定的第一个id
帖子的id
。这将导致错误,因为Rails尝试创建的Post将具有已经被使用的id
值。
是否可以以某种方式覆盖id
分配,以使其达到Post.last.id
的值?
答案 0 :(得分:1)
ID由Postgres sequence生成。 Rails将作为rails generate model Post
的一部分为您生成此代码,如果使用所有默认值,则表名为posts
,序列应称为posts_id_seq
。
您需要将序列重置为已经使用的ID后的下一个值 。
如果您要使用的下一个值是例如5000,则类似
ALTER SEQUENCE posts_id_seq RESTART WITH 5000;