相关疑难解决方法(0)

在Rails 3中删除表并删除模型的最佳方法是什么?

我有一个模型和一个桌子,我不再需要在我的应用程序中,我可以将它们留在那里,但我想删除它们以保持整洁.

我正在试图找出删除它们的最佳方法,而不是弄乱我的迁移db/schema.rb文件以及它可能对我的生产环境产生的任何副作用,我的应用程序在Heroku上.我在我的本地机器和heroku上使用PostgreSQL.

到目前为止,我已经找到了两种方法,但我不确定哪种方法最好?

方法1

我想过要进入我的数据库并丢弃表然后销毁模型.

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)

heroku rails-models rails-migrations ruby-on-rails-3

53
推荐指数
2
解决办法
3万
查看次数