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

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

我试过了:

rails generate migration drop_tablename

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

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


当前回答

您需要使用以下命令创建一个新的迁移文件

rails generate migration drop_table_xyz

并在新生成的迁移文件(db/migration/xxxxxxx_drop_table_xyz)中编写drop_table代码

drop_table :tablename

或者如果你想在不迁移的情况下删除表,只需打开rails控制台by

$ rails c

并执行以下命令

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

或者你可以使用更简单的命令

ActiveRecord::Migration.drop_table(:table_name)

其他回答

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

  rails g migration drop_tablename

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

    def change
      drop_table :table_name
    end

那你就得跑

    rake db:migrate 

在你的控制台。

如果要从模式中删除表,请执行下面的操作——

rails db:rollback

Run

rake db:migrate:down VERSION=<version>

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

例子:-

rake db:migrate:down VERSION=3846656238

打开rails控制台

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

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

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