2017-02-07 5 views
1

При работе над проектом группы ruby ​​on rails я обнаружил две таблицы в файле schema.rb, которые не соответствуют ни одному из файлов истории миграции. Есть ли команда rake для очистки файла схемы непреднамеренных таблиц?Нежелательные таблицы в файле схемы для rails app

Я пробовал команды от rake -T, но я не нашел тот, который мог бы переделать файл схемы.

rake db:dump не изменил файл схемы.

rake db:schema:dump также не изменил файл схемы.

+0

Попробуйте удалить файл schema.rb и запустить db: schema: dump again – eiko

+0

@eiko Но 'schema.rb' - это представление базы данных, созданное' db: schema: dump', проблема в том, что существуют бродячие таблицы в базе данных. –

+0

@muistooshort У меня есть отдаленная (возможно, ложная) память, которая иногда схема: дамп ничего не сделал бы, потому что rake думал schema.rb был уже обновлен. Я решил, что это займет всего пару секунд, чтобы попытаться сделать это. Но вы правы, что это, вероятно, проблема в самом db. – eiko

ответ

1

Я бы сказал, что это самый безопасный способ сделать это было бы, как этот

drop_table :bad_table_names if (table_exists? :bad_table_names) 

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

+0

Надеюсь, я правильно понимаю, что вы написали, это не команда rake, а просто запускает другой файл миграции, чтобы удалить ненужные таблицы? – Ian

+0

его миграция –

0

db:schema:dump создает схему из того, что существует в базе данных. Если вы отбросите таблицы из базы данных, а затем запустите его, вы удалите таблицы.

0

rake db:migrate должен обновить файл схемы с текущим состоянием db.

Смежные вопросы