目的
開発中に作成したデータベース内のレコードをすべて削除したい。
例)ユーザーテーブルの「test_user」など適当に作ったユーザーデータ
方法
ターミナルで「rails db:reset」コマンドを実行。
これでデータベースの中身が空っぽになる。
terashimatakaya@MacBook-Air furima-34501 % rails db:reset
Dropped database 'furima_34501_development'
Dropped database 'furima_34501_test'
Created database 'furima_34501_development'
Created database 'furima_34501_test'
Railsガイドv6.1 「4.3データベースをリセットする」によるとこのコマンドで行ったことは、「rails db:drop db:setup」と同等とのこと。
注意点としては「rails db:migrate」の意味は含まれていない点。
解説
「rails db:drop」コマンド
データベースを削除するコマンド。usersテーブルやらが全て削除される。
「rails db:create」する前の状態に戻ると思えばOK。
「rails db:setup」コマンド
データベースの作成、スキーマの読み込み、シードデータを用いてデータベースの初期化を実行。
実際にRailsがやってる処理の流れは、
①既存のdb/schema.rbを読み込む
②①の情報を頼りにデータベースを再作成
③再作成のタイミングでdb/seeds.rbに開発用のサンプルデータがあればそれもこのタイミングで再度流し込む
補足
なぜ「db/schema.rb」を参照するのか?
簡単に説明すると、古いマイグレーションファイルたちもイチから順に実行するとエラーが起きやすくなるから。
それよりも常に最新の状態に保たれているだろうschema.rbの情報をもとにしたほうがエラーが起こらず再度データベースを作成できるから、といったかんじだろうか。
詳細は以下のリンクで確認してください。