我添加了一个我认为我将需要的表格,但现在不再计划使用它。我该如何移除那张桌子?
我已经运行了迁移,所以这个表在我的数据库中。我认为rails生成迁移应该能够处理这个问题,但我还没有弄清楚如何处理。
我试过了:
rails generate migration drop_tablename
但这只是产生了一个空迁移。
在Rails中删除表的“官方”方式是什么?
我添加了一个我认为我将需要的表格,但现在不再计划使用它。我该如何移除那张桌子?
我已经运行了迁移,所以这个表在我的数据库中。我认为rails生成迁移应该能够处理这个问题,但我还没有弄清楚如何处理。
我试过了:
rails generate migration drop_tablename
但这只是产生了一个空迁移。
在Rails中删除表的“官方”方式是什么?
当前回答
如果您想删除一个特定的表,您可以这样做
$ rails db:migrate:up VERSION=[Here you can insert timestamp of table]
否则,如果您想删除所有数据库,您可以这样做
$rails db:drop
其他回答
Rails迁移drop_users 编辑迁移
class DropUsers < ActiveRecord::Migration
def change
drop_table :users do |t|
t.string :name
t.timestamps
end
end
end
rake db: migrate
执行命令:-
rails g migration drop_table_name
然后:
rake db:migrate
或者如果你使用的是MySql数据库,那么:
登录数据库 显示数据库; 显示表; table_name下降;
你不能简单地运行drop_table:table_name,相反,你可以通过运行以下命令创建一个空迁移: rails迁移drop安装
然后你可以把这个添加到空迁移中:
class DropInstalls < ActiveRecord::Migration
def change
drop_table :installs
end
end
然后在命令行中运行rails db:migrate,这将删除安装表 在这里找到了解决方案
您并不总是能够简单地生成迁移来拥有您想要的代码。您可以创建一个空迁移,然后用您需要的代码填充它。
你可以在这里找到关于如何在迁移中完成不同任务的信息:
http://api.rubyonrails.org/classes/ActiveRecord/Migration.html
更具体地说,你可以看到如何使用以下方法删除一个表:
drop_table :table_name
手动编写迁移。例如:运行rails g migration DropUsers。
至于迁移的代码,我将引用Maxwell Holder的帖子Rails migration Checklist
BAD—运行rake db:migrate and then rake db:rollback将失败
class DropUsers < ActiveRecord::Migration
def change
drop_table :users
end
end
GOOD -揭示了迁移不应该可逆的意图
class DropUsers < ActiveRecord::Migration
def up
drop_table :users
end
def down
fail ActiveRecord::IrreversibleMigration
end
end
BETTER -实际上是可逆的
class DropUsers < ActiveRecord::Migration
def change
drop_table :users do |t|
t.string :email, null: false
t.timestamps null: false
end
end
end