Как вам сбросить только конкретную таблицу в рельсах - PullRequest
2 голосов
/ 28 июля 2011

У меня есть таблицы (возможно, их так не называют) Пользователи и сообщения.Я добавил много тестовых сообщений в таблицу сообщений (возможно, это называется база данных), поэтому я хочу стереть ее.Я знаю, что мог бы использовать rake db: reset , но это также уничтожило бы таблицу Users.

Кто-нибудь знает, как сбросить только определенную таблицу?

Ответы [ 3 ]

7 голосов
/ 28 июля 2011

Возможно, вам лучше создать для этого задание с граблями. Вы можете даже указать пространство имен внутри «db», если хотите. т.е. rake db:reset_unimportant_models

В этой задаче вы можете сделать что-то вроде: ModelName.delete_all

Для получения дополнительной информации о delete_all проверьте здесь: http://apidock.com/rails/ActiveRecord/Relation/delete_all

Для получения дополнительной информации о создании задач рейка, проверьте здесь: http://jasonseifer.com/2010/04/06/rake-tutorial

Вот пример того, что вы можете сделать:

# lib/tasks/reset_unimportant_models_task.rake
namespace :db do
  desc "Sequentially clears out the models I don't care about"
  task :reset_unimportant_models => :environment do
    puts "Clearing out the BlahModel model"
    BlahModel.destroy_all
    puts "Finished."
  end
end

Тогда вы бы назвали это так: rake db:reset_unimportant_models и когда вы запустите rake -T, вы увидите его с заданиями db: blah

5 голосов
/ 28 июля 2011

Хотя я согласен с тем, что создание рейковой задачи - лучшее решение, иногда вам просто нужно попасть туда и быстро что-то очистить.

Если вы запустите rails console, вы можете позвонить ModelName.delete_all оттуда.

Считайте, что это плохое альтернативное решение.: -)

1 голос
/ 28 июля 2011

Или вы можете использовать консоль IRB:

irb(main):001:0> Post.delete_all
...