我添加了一个我认为我会需要的表,但现在不再打算使用它。我该如何移走那张桌子?
我已经运行了迁移,所以表在我的数据库中。我认为rails generate migration应该能够处理这件事,但我还没有弄清楚如何处理。
我试过了:
rails generate migration drop_tablename但这只会产生一个空的迁移。
在Rails中删除表的“正式”方式是什么?
发布于 2010-10-26 09:54:47
您并不总是能够简单地生成迁移以获得您想要的代码。您可以创建一个空迁移,然后使用所需的代码填充它。
您可以在此处找到有关如何在迁移中完成不同任务的信息:
http://api.rubyonrails.org/classes/ActiveRecord/Migration.html
更具体地说,您可以看到如何使用以下方法删除一个表:
drop_table :table_name发布于 2011-10-16 02:57:15
首先,使用您喜欢的名称生成一个空迁移。这样做很重要,因为它创建了适当的日期。
rails generate migration DropProductsTable这将在/db/ .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,它将为您删除该表。
发布于 2015-07-27 23:25:02
手动编写您的迁移。例如,运行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
endGOOD -显示迁移不应可逆的意图
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
endhttps://stackoverflow.com/questions/4020131
复制相似问题