我添加了一个我认为我将需要的表格,但现在不再计划使用它。我该如何移除那张桌子?

我已经运行了迁移,所以这个表在我的数据库中。我认为rails生成迁移应该能够处理这个问题,但我还没有弄清楚如何处理。

我试过了:

rails generate migration drop_tablename

但这只是产生了一个空迁移。

在Rails中删除表的“官方”方式是什么?


当前回答

替代引发异常或试图重新创建一个现在空的表-同时仍然启用迁移回滚,重做等-

def change
  drop_table(:users, force: true) if ActiveRecord::Base.connection.tables.include?('users')
end

其他回答

ActiveRecord:: Base.connection。drop_table: table_name

你可以按照指南中的方式回滚一次迁移:

http://guides.rubyonrails.org/active_record_migrations.html#reverting-previous-migrations

生成迁移:

rails generate migration revert_create_tablename

编写迁移:

require_relative '20121212123456_create_tablename'

class RevertCreateTablename < ActiveRecord::Migration[5.0]
  def change
    revert CreateTablename    
  end
end

通过这种方式,您还可以回滚并用于恢复任何迁移

简单而正式的方式是这样的:

  rails g migration drop_tablename

现在转到您的db/migrate,并寻找包含drop_tablename作为文件名的文件,并将其编辑为此。

    def change
      drop_table :table_name
    end

那你就得跑

    rake db:migrate 

在你的控制台。

首先,生成一个具有任意名称的空迁移。这样做很重要,因为它创建了适当的日期。

rails generate migration DropProductsTable

这将在/db/migrate/目录下生成一个。rb文件,如20111015185025_drop_products_table.rb

现在编辑该文件,如下所示:

class DropProductsTable < ActiveRecord::Migration
  def up
    drop_table :products
  end

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end

我唯一添加的东西是drop_table:products和raise ActiveRecord::IrreversibleMigration。

然后运行rake db:migrate,它会帮你删除这个表。

你能做的最好的办法就是

rails g migration Drop_table_Users

然后执行以下操作

rake db:migrate