截断模型中的所有数据并重新启动id



我的Category模型中有几个记录。所有这些都是测试数据。现在我想清除数据。

如果我发出Category.destroy_all或Category.delete_all,则所有记录都将被删除。但是,任何新创建的记录都不会以id 1开头。如果我之前有10张唱片,那么在我销毁之前的唱片后,新的类别从11开始。

如何强制从1重新启动id?

ActiveRecord::Base.connection.execute("TRUNCATE TABLE #{table_name}")

你可以运行选择运行它:

  1. 轨道控制台

  2. 在seed.rb文件中,如果您没有控制台访问权限。(在类别模型中创建一个只运行一次的方法。(rake db:seed))

app/model/category.rb:

def truncate_me!
  ActiveRecord::Base.connection.execute("TRUNCATE TABLE #{table_name}")
end

db/seed.rb

Category.truncate_me!

3.在迁移中

若您有权访问数据库,还可以运行实际的TRUNCATE查询。

您可以使用以下命令重新进行迁移:

rake db:migrate:redo VERSION=your_category_migration_version

这将删除类别表并重新创建它。如果您有其他更改类别表的迁移,那么您也需要运行这些迁移。

执行完上述rake任务后,就可以运行种子任务了。

相关内容

最新更新