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

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

我试过了:

rails generate migration drop_tablename

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

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


当前回答

Run

rake db:migrate:down VERSION=<version>

其中<version>是您想要恢复的迁移文件的版本号。

例子:-

rake db:migrate:down VERSION=3846656238

其他回答

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

手动编写迁移。例如:运行rails g migration DropUsers。

至于迁移的代码,我将引用Maxwell Holder的帖子Rails migration Checklist

BAD—运行rake db:migrate and then rake db:rollback将失败

class DropUsers < ActiveRecord::Migration
  def change
    drop_table :users
  end
end

GOOD -揭示了迁移不应该可逆的意图

class DropUsers < ActiveRecord::Migration
  def up
    drop_table :users
  end

  def down
    fail ActiveRecord::IrreversibleMigration
  end
end

BETTER -实际上是可逆的

class DropUsers < ActiveRecord::Migration
  def change
    drop_table :users do |t|
      t.string :email, null: false
      t.timestamps null: false
    end
  end
end

执行命令:-

rails g migration drop_table_name

然后:

rake db:migrate

或者如果你使用的是MySql数据库,那么:

登录数据库 显示数据库; 显示表; table_name下降;

Run

rake db:migrate:down VERSION=<version>

其中<version>是您想要恢复的迁移文件的版本号。

例子:-

rake db:migrate:down VERSION=3846656238

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

  rails g migration drop_tablename

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

    def change
      drop_table :table_name
    end

那你就得跑

    rake db:migrate 

在你的控制台。