首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails数据库迁移-如何删除表?

Rails数据库迁移-如何删除表?
EN

Stack Overflow用户
提问于 2010-10-26 09:52:32
回答 23查看 418.6K关注 0票数 549

我添加了一个我认为我会需要的表,但现在不再打算使用它。我该如何移走那张桌子?

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

我试过了:

代码语言:javascript
运行
复制
rails generate migration drop_tablename

但这只会产生一个空的迁移。

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

EN

回答 23

Stack Overflow用户

回答已采纳

发布于 2010-10-26 09:54:47

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

您可以在此处找到有关如何在迁移中完成不同任务的信息:

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

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

代码语言:javascript
运行
复制
drop_table :table_name
票数 690
EN

Stack Overflow用户

发布于 2011-10-16 02:57:15

首先,使用您喜欢的名称生成一个空迁移。这样做很重要,因为它创建了适当的日期。

代码语言:javascript
运行
复制
rails generate migration DropProductsTable

这将在/db/ .rb /中生成一个类似于20111015185025_drop_products_table.rb的迁移文件

现在,将该文件编辑为如下所示:

代码语言:javascript
运行
复制
class DropProductsTable < ActiveRecord::Migration
  def up
    drop_table :products
  end

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end

我唯一添加的是drop_table :productsraise ActiveRecord::IrreversibleMigration

然后运行rake db:migrate,它将为您删除该表。

票数 377
EN

Stack Overflow用户

发布于 2015-07-27 23:25:02

手动编写您的迁移。例如,运行rails g migration DropUsers

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

运行错误的rake db:migrate,然后rake db:rollback将失败

代码语言:javascript
运行
复制
class DropUsers < ActiveRecord::Migration
  def change
    drop_table :users
  end
end

GOOD -显示迁移不应可逆的意图

代码语言:javascript
运行
复制
class DropUsers < ActiveRecord::Migration
  def up
    drop_table :users
  end

  def down
    fail ActiveRecord::IrreversibleMigration
  end
end

更好-实际上是可逆的

代码语言:javascript
运行
复制
class DropUsers < ActiveRecord::Migration
  def change
    drop_table :users do |t|
      t.string :email, null: false
      t.timestamps null: false
    end
  end
end
票数 358
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4020131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档