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

时间:2013-08-11 06:36:29

标签: ruby-on-rails ruby-on-rails-4

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

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

如何从1强制重启id?

2 个答案:

答案 0 :(得分:0)

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

您可以选择运行它:

    在rails控制台

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

  2. app / model / category.rb:

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

    分贝/ seed.rb

    Category.truncate_me!
    

    3。在迁移中

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

答案 1 :(得分:0)

您可以使用以下命令重做迁移:

rake db:migrate:redo VERSION=your_category_migration_version

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

执行上述rake任务后,您可以运行种子任务。