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

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

我试过了:

rails generate migration drop_tablename

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

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


当前回答

您可以简单地从rails控制台删除一个表。 首先打开控制台

$ rails c

然后将此命令粘贴到控制台

ActiveRecord::Migration.drop_table(:table_name)

将table_name替换为要删除的表。

您也可以直接从终端删除表。只需输入应用程序的根目录并运行此命令

$ rails runner "Util::Table.clobber 'table_name'"

其他回答

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

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控制台删除一个表。 首先打开控制台

$ rails c

然后将此命令粘贴到控制台

ActiveRecord::Migration.drop_table(:table_name)

将table_name替换为要删除的表。

您也可以直接从终端删除表。只需输入应用程序的根目录并运行此命令

$ rails runner "Util::Table.clobber 'table_name'"

如果您想删除一个特定的表,您可以这样做

$ rails db:migrate:up VERSION=[Here you can insert timestamp of table]

否则,如果您想删除所有数据库,您可以这样做

$rails db:drop

打开rails控制台

ActiveRecord::Base.connection.execute("drop table table_name")

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

  rails g migration drop_tablename

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

    def change
      drop_table :table_name
    end

那你就得跑

    rake db:migrate 

在你的控制台。