3

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

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

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

4

2 回答 2

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

You can run choose to run it:

  1. in rails console

  2. in seed.rb file if you don't have console access. (Make a method in category model that you will run only once. (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. in a migration

If you have access to database you can also run an actual TRUNCATE query.

于 2013-08-11T06:54:29.180 回答
0

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

rake db:migrate:redo VERSION=your_category_migration_version

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

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

于 2013-08-11T07:02:32.983 回答