我有一个模型和我不再需要我的应用程序表,我可以离开他们那里,但我想将其删除,以保持整洁。
我试图找出与与我的迁移和DB / schema.rb文件及任何副作用,它可能对我的生产环境乱搞删除它们的最好方式,我的应用程序是在Heroku。 我用我的两个本地机器和Heroku的PostgreSQL的。
到目前为止,我已经找到了两种方法可以做到这一点,但我不知道这是最好的方法/轨道的方式?
方法1
我想到了刚刚要在我的数据库和删除表&然后破坏模型。
rails db
DROP TABLE table_name
\q
rails destroy model model_name
如果我这样做会发生什么迁移我对这个模型/表? 我有两个迁移这个模型中,timestamp_create_modelname&A add_attribute_to_table名。
也将这种方法更新DB / schema.rb文件?
当我推到应用程序的Heroku我怀疑该模型将被删除,但该表将留在原地,有没有Heroku的命令删除表。
方法二
我读到的另一种方式是产生新的迁移删除表&然后销毁模型。
rails generate migration drop_tablename
&然后更新以下文件:
DB /迁移/ timestamp_drop_tablename(在性反应如下更新丹至极的答案)
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 /玛每次运行耙分贝时间:迁移只能由DB重写/迁移/ timestamp_drop_tablename?
我很高兴与第二种方法进行试验,但希望有人与有经验的人在权衡&告诉我这样做的导轨方式。