web-dev-qa-db-ja.com

データベースをリセット(すべてパージ)してから、データベースをシードします

データベーステーブルのデータを消去するrakeコマンドはありますか?

テーブルにデータを事前入力するdb:seedスクリプトを作成するにはどうすればよいですか?

155
Blankman

rake db:resetを使用して、データベースを削除してから再作成し、seeds.rbファイルを含めます。 http://guides.rubyonrails.org/migrations.html#resetting-the-database

275
JackCA

すべてを削除し、両方を使用してデータベース+シードを再作成できます。

  1. rake db:reset:schema.rbからロード
  2. rake db:drop db:create db:migrate db:seed:マイグレーションからのロード

データベース(Railsサーバー、SQLクライアントなど)への接続がないことを確認してください。接続がない場合、データベースはドロップしません。

schema.rbは、以下によって生成されたデータベースの現在の状態のスナップショットです。

rake db:schema:dump
159
laffuste

データをリロードするためだけにShebang全体をドロップして再作成したくない場合は、seed.dbファイルでMyModel.destroy_all(またはdelete_all)を使用して、MyModel.create!(...)ステートメントの前にテーブルを削除できます。データをロードします。その後、db:seed操作を何度もやり直すことができます。 (明らかに、これはデータをロードしたテーブルにのみ影響し、残りのテーブルには影響しません。)

https://stackoverflow.com/a/14957893/4553442 に「ダーティハック」があり、上下に移行するのと同様の「シード除去」操作が追加されます...

6
Tom Hundt

Rails 5現在、rakeコマンドラインツールはRailsとしてエイリアスされているため、

Rails db:resetの代わりにrake db:reset

同様に動作します

3
DazBaldwin

ローカルデータベースを削除し、rake db:resetからロードされたデータで新たに開始する場合は、db/seeds.rbを使用できます。これは、スキーマをまだ理解していて、既存のモデルにフィールドを追加する必要がある場合に便利なコマンドです。

リセットコマンドを使用すると、次の処理が行われます。データベースの削除:rake db:dropスキーマの読み込み:rake db:schema:load Seedデータ:rake db:seed

ただし、データベースを完全に削除する場合は、rake db:dropを使用できます。データベースを削除すると、スキーマの競合や不正なデータも削除されます。持っているデータを保持したい場合は、このコマンドを実行する前に必ずバックアップしてください。

これは、最も重要な rakeデータベースコマンド に関する詳細な記事です。

0
Nesha Zoric