Удалить MySQL таблицы в Rails - PullRequest
0 голосов
/ 05 мая 2010

Как мне отбросить выбранные таблицы в Rails? Я хочу удалить все таблицы из базы данных с заданным префиксом. PHPMyAdmin был бы очень полезен на этом этапе.

Спасибо

1 Ответ

1 голос
/ 05 мая 2010

Вы можете установить phpMyAdmin и вручную удалить свои таблицы, или, если вы хотите сделать это из среды rails и держать ваши миграции синхронизированными, почему бы не создать новую миграцию, которая удаляет таблицы на self.up и создает таблицы на self.down.

class DropOldTablesMigration < ActiveRecord::Migration
  def self.up
    drop_table :prefix_table1
    drop_table :prefix_table2
  end

  def self.down
    create_table :prefix_table1 do |t|
      t.column :name, :string
    end
    create_table :prefix_table2 do |t|
      t.column :name, :string
    end
  end
end

EDIT: Просто для продолжения, если проблема в том, что таблиц много, и вы не хотите вводить их все, вы можете сделать что-то вроде этого:

class DropOldTablesMigration < ActiveRecord::Migration
  def self.up
    ActiveRecord::Base.connection.tables.each do |t|
      unless t.index('yourprefix_') == nil
        drop_table t
      end
    end
  end
end

Конечно, вы не сможете воссоздать таблицы при переносе таким образом, но в зависимости от того, что происходит в вашем приложении, это может не беспокоить.


РЕДАКТИРОВАТЬ В ОТВЕТ НА ВАШ КОММЕНТАРИЙ:

Чтобы создать новую миграцию, из корня вашего приложения выполните следующую команду:

script/generate migration YourMigrationName

Файл миграции будет создан для вас в db / migrate. Добавьте код, который вы хотите запустить, и сохраните его. Для запуска нового файла введите в командной строке следующее:

rake db:migrate
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...