У меня есть модель и таблица, которые мне больше не нужны в моем приложении, я мог бы оставить их там, но я хотел бы удалить их, чтобы все было в порядке.
Я пытаюсь найти лучший способ удалить их с помощью беспорядков с моими миграциями и файлами db/schema.rb и любым побочным эффектом, который он может иметь в моей рабочей среде, мое приложение находится на Heroku. Я использую PostgreSQL как на своей локальной машине, так и на геройку.
До сих пор я нашел два способа сделать это, но не уверен, какой метод наилучшего метода/рельсов?
Метод 1
Я думал о том, чтобы просто войти в мою базу данных и сбросить таблицу, а затем уничтожить модель.
rails db
DROP TABLE table_name
\q
rails destroy model model_name
Если я сделаю это, что произойдет с миграциями, которые у меня есть для этой модели/таблицы? У меня есть две миграции для этой модели: timestamp_create_modelname и имя_домена_домена_домена.
Также будет ли этот метод обновлять файл db/schema.rb?
Когда я нажимаю приложение на Heroku, я подозреваю, что модель будет удалена, но таблица останется на месте, есть ли команда heroku для удаления таблицы.
Метод второй
Еще один способ, которым я читал, - создать новую миграцию, чтобы удалить таблицу, а затем уничтожить модель.
rails generate migration drop_tablename
& затем обновите следующий файл:
db/migrate/timestamp_drop_tablename (обновлено в ответ на ответ Dan Wich ниже)
class DropTablename < ActiveRecord::Migration
def up
drop_table :tablename
end
def down
create_table :tablename do |t|
t.string :table_column
t.references :anothertable
t.timestamps
end
add_index :tablenames, :anothertable_id
end
end
& затем в терминале:
rake db:migrate
rails destroy model model_name
rake db:migrate
git add .
git commit -m "removed table/model_name"
git push heroku master
heroku run rake db:migrate
heroku restart
Кажется, это лучший метод, но что происходит с более старыми файлами миграции? Будут ли они оставаться и обновлять db/shema каждый раз, когда я запускаю rake db: migrate только для переопределения db/migrate/timestamp_drop_tablename?
Я счастлив поэкспериментировать со вторым методом, но хотел бы, чтобы кто-то с кем-то, у кого был опыт, взвесил и сказал мне, что это рельсы для этого.