一尘不染

Rake任务以截断Rails 3中的所有表

sql

我想完成一个削减所有表的任务。我已经在互联网上找到了一个,但是应该只在Rails 2上使用,而对于 Rails 3
则不起作用(问题在于获取数据库连接)。

rake db:reset不是一个选择,因为我使用的是PostgreSQL,它也会删除用户。因此,迁移失败。我只想清除数据。

你们有东西给我吗?


阅读 141

收藏
2021-03-17

共1个答案

一尘不染

我已经通过google找到了,然后得到了一个比批准的解决方案简单得多的解决方案,所以这里是:使用database_cleaner
gem。这是步骤。

在您的Gemfile中(修改后执行包):

gem 'database_cleaner' # you might want to limit this to the dev and staging group

有了该gem之后,该语句DatabaseCleaner.clean_with :truncation将截断数据库。将其添加到rake任务很简单:

# tasks/db/clean.rake

namespace :db do

  desc "Truncate all existing data"
  task :truncate => "db:load_config" do
    DatabaseCleaner.clean_with :truncation
  end

end

而已。您也可以直接DatabaseCleaner.clean_with :truncationdb/seeds.rb文件中使用该行,以免忘记在播种之前截断数据库。

2021-03-17