Reset базу данных (очистить все), затем занести базу данных

Есть ли команда rake для уничтожения данных в таблицах базы данных?

Как создать db: seed script, чтобы предварительно заполнить данные в мои таблицы?

Ответ 2

Вы можете удалить все и заново создать базу данных + семена обоими:

  • rake db:reset: загрузка из schema.rb
  • rake db:drop db:create db:migrate db:seed: загрузка из миграции

Убедитесь, что у вас нет подключений к db (сервер rails, клиент sql..), или db не будет отбрасываться.

schema.rb - это моментальный снимок текущего состояния вашей базы данных, сгенерированный с помощью:

rake db:schema:dump

Ответ 3

Если вы не хотите отбрасывать и воссоздавать весь shebang только для перезагрузки ваших данных, вы можете использовать MyModel.destroy_all (или delete_all) в файле seed.db, чтобы очистить таблицу до вашего MyModel.create!(...) операторы загружают данные. Затем вы можете повторно выполнять операцию db:seed снова и снова. (Очевидно, это влияет только на таблицы, в которые вы загрузили данные, а не на остальные).

Там есть "грязный хак" в fooobar.com/questions/14744/..., чтобы добавить операцию "дезанимания", аналогичную миграции вверх и вниз...

Ответ 4

По Rails 5 инструмент командной строки rake был отброшен, так что теперь он

rails db:reset вместо rake db:reset