Em muitos casos, queremos excluir todas as entradas do banco de dados. Podemos descartar o banco de dados e reconfigurá-lo, lembre-se rake db:reset
ou rake db:drop && rake db:create && rake db:migrate
.
Acho que, em vez de recriar o banco de dados apenas para remover todas as entradas do banco de dados, truncar o banco de dados é o melhor caminho a seguir. Para fazer isso, adicione o snippet em lib/tasks/db.rake
:
namespace :db do
desc 'Truncate all tables, except schema_migrations (customizable)'
task :truncate, [ :tables ] => 'db:load_config' do |t, args|
args.with_defaults(tables: 'schema_migrations')
skipped = args[:tables].split(' ')
config = ActiveRecord::Base.configurations[::Rails.env]
ActiveRecord::Base.establish_connection
ActiveRecord::Base.connection.tables.each do |table|
ActiveRecord::Base.connection.execute("TRUNCATE #{table}") unless skipped.include?(table)
end
end
end
Então, podemos simplesmente executar:
rake db:truncate
Se quisermos pular algumas tabelas, podemos executar como:
rake db:truncate[schema_migrations users profiles]