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

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

我试过了:

rails generate migration drop_tablename

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

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


当前回答

您并不总是能够简单地生成迁移来拥有您想要的代码。您可以创建一个空迁移,然后用您需要的代码填充它。

你可以在这里找到关于如何在迁移中完成不同任务的信息:

http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

更具体地说,你可以看到如何使用以下方法删除一个表:

drop_table :table_name

其他回答

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

  rails g migration drop_tablename

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

    def change
      drop_table :table_name
    end

那你就得跑

    rake db:migrate 

在你的控制台。

执行命令:-

rails g migration drop_table_name

然后:

rake db:migrate

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

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

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

rails db:rollback

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

$ rails c

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

ActiveRecord::Migration.drop_table(:table_name)

将table_name替换为要删除的表。

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

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

我不能让它与迁移脚本一起工作,所以我继续使用这个解决方案。使用终端进入rails控制台:

rails c

Type

ActiveRecord::Migration.drop_table(:tablename)

这对我来说很有效。这将删除前一个表。别忘了跑步

rails db:migrate