我有一个模型和一个桌子,我不再需要在我的应用程序中,我可以将它们留在那里,但我想删除它们以保持整洁.
我正在试图找出删除它们的最佳方法,而不是弄乱我的迁移和db/schema.rb文件以及它可能对我的生产环境产生的任何副作用,我的应用程序在Heroku上.我在我的本地机器和heroku上使用PostgreSQL.
到目前为止,我已经找到了两种方法,但我不确定哪种方法最好?
我想过要进入我的数据库并丢弃表然后销毁模型.
rails db
DROP TABLE table_name
\q
rails destroy model model_name
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我对此模型/表的迁移会发生什么?我有两个此模型的迁移,一个timestamp_create_modelname和一个add_attribute_to_table名称.
此方法也会更新db/schema.rb文件吗?
当我将应用程序推送到Heroku时,我怀疑模型将被删除但是表格将保留在原位,是否有一个heroku命令来删除表格.
我读到的另一种方法是生成一个新的迁移以删除表然后销毁模型.
rails generate migration drop_tablename
Run Code Online (Sandbox Code Playgroud)
然后更新以下文件:
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
Run Code Online (Sandbox Code Playgroud)
然后在终端:
rake db:migrate
rails destroy model model_name
rake db:migrate
git add .
git commit -m "removed table/model_name"
git …
Run Code Online (Sandbox Code Playgroud)