如何删除表格?
我添加了一张我认为需要的表格,但现在不再计划使用它了。 我应该如何移除该表格?
我已经运行了迁移,所以表格在我的数据库中。 我想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 :products
和raise 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?