Maneira mais rápida de redefinir as entradas do banco de dados

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:resetou 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]