如何删除表格?

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

我已经运行了迁移,所以表格在我的数据库中。 我想rails generate migration应该能够处理这个,但我还没有想出如何。

我试过了:
rails generate migration drop_tablename
但是这只是产生了一个空的迁移。

什么是在Rails中放置表的“官方”方式?


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

您可以在这里找到有关如何完成不同任务的信息:

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

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

drop_table :table_name

首先用你想要的任何名字生成一个空的迁移。 这样做很重要,因为它会创建适当的日期。

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 :productsraise ActiveRecord::IrreversibleMigration

然后运行rake db:migrate ,它会为你删除表格。


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

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

坏 - 运行rake db:migrate ,然后rake db:rollback将会失败

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

好 - 揭示意图迁移不应该是可逆的

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

  def down
    fail ActiveRecord::IrreversibleMigration
  end
end

更好 - 实际上是可逆的

class DropUsers < ActiveRecord::Migration
  def change
    drop_table :users do |t|
      t.string :email, null: false
      t.timestamps null: false
    end
  end
end
链接地址: http://www.djcxy.com/p/47181.html

上一篇: How To Drop a Table?

下一篇: How to drop columns using Rails migration