如何仅重置rails中的特定表

时间:2011-07-27 23:17:11

标签: ruby-on-rails database rake reset

我有桌子(也许他们没有被称为)用户和帖子。我在Posts表中添加了很多测试帖子(也许它叫做数据库),所以我想把它擦掉。我知道我可以使用 rake db:reset ,但这也会擦除Users表。

有谁知道如何仅重置特定的表格?

3 个答案:

答案 0 :(得分:7)

最好为此创建一个rake任务。如果你愿意,你甚至可以在'db'中命名它。即rake db:reset_unimportant_models

在那项任务中你可以做类似的事情:ModelName.delete_all

有关delete_all的更多信息,请点击此处:http://apidock.com/rails/ActiveRecord/Relation/delete_all

有关创建佣金任务的详细信息,请点击此处:http://jasonseifer.com/2010/04/06/rake-tutorial

以下是您可能会做的一个示例:

# lib/tasks/reset_unimportant_models_task.rake
namespace :db do
  desc "Sequentially clears out the models I don't care about"
  task :reset_unimportant_models => :environment do
    puts "Clearing out the BlahModel model"
    BlahModel.destroy_all
    puts "Finished."
  end
end

然后你会这样称呼: rake db:reset_unimportant_models 当你运行rake -T时,你会看到db:blah tasks

答案 1 :(得分:5)

虽然我同意创建一个rake任务是更好的解决方案,但有时你只是想进入并快速清除一些东西。

如果您运行rails console,则可以从那里拨打ModelName.delete_all

认为这是一个糟糕的替代解决方案。 : - )

答案 2 :(得分:1)

或者您可以使用IRB控制台:

irb(main):001:0> Post.delete_all