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

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

我试过了:

rails generate migration drop_tablename

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

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


当前回答

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

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 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,它会帮你删除这个表。

如果有人在寻找如何在SQL中做到这一点。

从终端输入rails dbconsole

输入密码

在控制台做

使用db_name;

DROP TABLE table_name;

exit

请不要忘记从模式中删除迁移文件和表结构

你能做的最好的办法就是

rails g migration Drop_table_Users

然后执行以下操作

rake db:migrate

我认为,为了完全“正式”,你需要创建一个新的迁移,并把drop_table放在self.up中。自我。方法应该包含完整地重新创建表的所有代码。假定代码可以从模式中提取。Rb在你创建迁移的时候。

添加代码来创建一个您知道不再需要的表,这似乎有点奇怪,但这将保持所有迁移代码的完整和“正式”,对吗?

我只是对我需要放下的桌子做了这样的操作,但老实说,我没有测试“放下”,也不确定我为什么要这么做。

Rails迁移drop_users 编辑迁移

    class DropUsers < ActiveRecord::Migration
      def change
        drop_table :users do |t|
          t.string :name
          t.timestamps
        end
      end
    end

rake db: migrate