我的Category模型中有几个记录。所有这些都是测试数据。现在我想清除数据。
如果我发出Category.destroy_all或Category.delete_all,则所有记录都将被删除。但是,任何新创建的记录都不会以id 1开头。如果我之前有10张唱片,那么在我销毁之前的唱片后,新的类别从11开始。
如何强制从1重新启动id?
ActiveRecord::Base.connection.execute("TRUNCATE TABLE #{table_name}")
你可以运行选择运行它:
轨道控制台
在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任务后,就可以运行种子任务了。