Rails 3:使用迁移删除数据表

5
我有一张使用迁移创建的表,现在我想要摆脱这个表。我相信我可以撤销那个迁移,但我找不到执行该操作的语法。我通过搜索Rails DB Migration - How To Drop a Table? 找到了这个问题,但他只是说你可以找到你需要的东西并提供一个链接。我阅读了那个链接,但没有看到任何关于如何执行此操作的内容。我看到了一些片段,但不知道如何将它们组合起来。我在迁移中看到有一个self.down方法,我只需要知道如何调用它。
5个回答

16
尝试创建一个空迁移并使用:
drop_table :table_name

8
您可以通过以下命令回滚最后一次迁移: rake db:rollback 这将运行 self.down 方法,该方法应为 drop_table :table_name

如果这是我上个月运行的迁移,而且自那以后我又做了很多迁移,那该怎么办? - Jhorra
@jhorra...我认为你最好编写一个新的迁移文件,在up方法中加入drop_table :table_name,在down方法中加入create_table :table_name,然后运行迁移。这样,任何使用相同项目的其他人在使用rake db:migrate时都会删除该表。 - rubyprince
好的,我会走新的迁移路线。 - Jhorra

3
rake db:rollback STEP=n

如果您需要回滚步数,请使用 n 代表需要回滚的步数。如果不指定 STEP,则默认值为 1。

要迁移到特定版本,请使用:

rake db:migrate:down VERSION=20080906120000

如果您想快速删除一个表,您可以创建一个新的迁移,运行它,然后连同您不再需要的原始迁移一起删除。删除表的语法为:
drop_table :table_name

0

销毁模型并不是最好的方法。

相反,在Rails控制台中运行此命令:rake db:rollback

(要访问Rails控制台,请在终端中输入rails c,如此处所示)


-11

您可以使用rake命令来删除模型以删除表格:

rails destroy model your_model

3
Rails模型不是数据库中的表或任何其他部分。当运行generate model Foo命令创建一个相应的数据库迁移,以创建一个用于存储Foo实例的表时,运行destroy model Foo并不会销毁该表。正如http://railsforum.com/viewtopic.php?pid=10961#p10961所说:“需要注意的是 - 当你生成一个模型时,它会创建一个数据库迁移。如果你对该模型运行‘destroy’命令,它将删除迁移文件,但不会删除数据库表...” - Teemu Leisti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接