如何仅重置rails中的特定表

Vas*_*rth 2 database rake ruby-on-rails reset

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

有谁知道如何只重置一个特定的表?

Mar*_*tto 7

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

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

有关delete_all的更多信息,请访问:http://apidock.com/rails/ActiveRecord/Relation/delete_all

有关创建rake任务的更多信息,请访问: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
Run Code Online (Sandbox Code Playgroud)

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

  • 但是,这实际上并没有重置表.ID将按顺序从最后创建的记录开始,对吗? (3认同)

Tim*_*van 5

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

如果你跑rails console,你可以ModelName.delete_all从那里打电话.

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