首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何删除Rails中所有表中的所有数据?

如何删除Rails中所有表中的所有数据?
EN

Stack Overflow用户
提问于 2009-07-29 03:14:49
回答 14查看 70.6K关注 0票数 65

我可以使用Post.delete_all删除所有帖子,但如果我想删除所有帖子、评论、博客等,该怎么办?

如何遍历所有模型并运行delete_all方法?

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2009-07-28 19:21:26

rake db:reset 

它通过迁移重新创建您的表。

正如评论中所建议的,一种更快的方法(但你必须添加一个新的rake任务)是:

namespace :db do
  desc "Truncate all tables"
  task :truncate => :environment do
    conn = ActiveRecord::Base.connection
    tables = conn.execute("show tables").map { |r| r[0] }
    tables.delete "schema_migrations"
    tables.each { |t| conn.execute("TRUNCATE #{t}") }
  end
end

响应复制自:answer on SO

票数 87
EN

Stack Overflow用户

发布于 2009-07-28 23:05:59

您可以通过以下方式进行更精细的控制:

rake db:drop:all

然后在不运行迁移的情况下创建数据库,

rake db:create:all

然后运行所有的迁移,

rake db:migrate 

您还可以执行以下操作:

mysqladmin drop databasename
票数 28
EN

Stack Overflow用户

发布于 2010-05-07 22:59:48

如果只是想用一组全新的空表重新开始,可以首先确保在db/schema.rb中有一个最新的模式定义:

rake db:schema:dump

然后:

rake db:schema:load

它的效果是删除表,然后重新创建它们,而不需要运行整个迁移过程。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1196172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档