データベーステーブルのデータを消去するrakeコマンドはありますか?
テーブルにデータを事前入力するdb:seedスクリプトを作成するにはどうすればよいですか?
rake db:reset
を使用して、データベースを削除してから再作成し、seeds.rbファイルを含めます。 http://guides.rubyonrails.org/migrations.html#resetting-the-database
すべてを削除し、両方を使用してデータベース+シードを再作成できます。
rake db:reset
:schema.rbからロードrake db:drop db:create db:migrate db:seed
:マイグレーションからのロードデータベース(Railsサーバー、SQLクライアントなど)への接続がないことを確認してください。接続がない場合、データベースはドロップしません。
schema.rbは、以下によって生成されたデータベースの現在の状態のスナップショットです。
rake db:schema:dump
データをリロードするためだけにShebang全体をドロップして再作成したくない場合は、seed.dbファイルでMyModel.destroy_all
(またはdelete_all
)を使用して、MyModel.create!(...)
ステートメントの前にテーブルを削除できます。データをロードします。その後、db:seed
操作を何度もやり直すことができます。 (明らかに、これはデータをロードしたテーブルにのみ影響し、残りのテーブルには影響しません。)
https://stackoverflow.com/a/14957893/4553442 に「ダーティハック」があり、上下に移行するのと同様の「シード除去」操作が追加されます...
Rails 5現在、rake
コマンドラインツールはRails
としてエイリアスされているため、
Rails db:reset
の代わりにrake db:reset
同様に動作します
ローカルデータベースを削除し、rake db:reset
からロードされたデータで新たに開始する場合は、db/seeds.rb
を使用できます。これは、スキーマをまだ理解していて、既存のモデルにフィールドを追加する必要がある場合に便利なコマンドです。
リセットコマンドを使用すると、次の処理が行われます。データベースの削除:rake db:drop
スキーマの読み込み:rake db:schema:load
Seedデータ:rake db:seed
ただし、データベースを完全に削除する場合は、rake db:drop
を使用できます。データベースを削除すると、スキーマの競合や不正なデータも削除されます。持っているデータを保持したい場合は、このコマンドを実行する前に必ずバックアップしてください。
これは、最も重要な rakeデータベースコマンド に関する詳細な記事です。