我的类别模型中有几条记录。都是测试数据。现在我想清除数据。
如果我发出 Category.destroy_all 或 Category.delete_all 所有记录都将被删除。但是,任何新创建的记录都不是以 id 1 开头的。如果我之前有 10 条记录,我销毁之前的记录后的新类别从 11 开始。
如何强制从 1 重新启动 id?
我的类别模型中有几条记录。都是测试数据。现在我想清除数据。
如果我发出 Category.destroy_all 或 Category.delete_all 所有记录都将被删除。但是,任何新创建的记录都不是以 id 1 开头的。如果我之前有 10 条记录,我销毁之前的记录后的新类别从 11 开始。
如何强制从 1 重新启动 id?
ActiveRecord::Base.connection.execute("TRUNCATE TABLE #{table_name}")
You can run choose to run it:
in rails console
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.
您可以使用以下命令重做迁移:
rake db:migrate:redo VERSION=your_category_migration_version
这将删除类别表并重新创建它。如果您有其他更改类别表的迁移,那么您也需要运行这些迁移。
执行完上述 rake 任务后,就可以运行你的种子任务了。