【问题标题】:Database structure in a Rails project and keep track of migrationsRails 项目中的数据库结构并跟踪迁移
【发布时间】:2013-04-30 21:34:02
【问题描述】:
所以经过大量阅读后,我发现我不需要提前计划我的数据库。我刚开始开发应用程序并针对每个更改进行迁移。
例如,如果我决定添加一些东西,我会通过迁移添加它。然后在另一个迁移中,我出于某种原因将其删除。最后我决定把它拿回来。很快就会有一堆乱七八糟的迁移。
我如何跟踪它们?首先考虑数据库结构不是更容易吗?
【问题讨论】:
标签:
ruby-on-rails
database
ruby-on-rails-3.2
rails-migrations
【解决方案1】:
Rails 的方式是通过迁移完成所有工作。根据您的情况,它会是:
migration1 #add column A
migration2 #remove column A
migration3 #add column A again
似乎有很多迁移,但在实际情况下,它会保持您的数据库更改干净。因为在任何给定时间你这样做:
rake db:migrate
Rails 将仅运行挂起的迁移。
并且在任何给定时间,您都会看到 db/schema.rb 文件,其中包含所有迁移和最新迁移编号作为版本。
话虽如此,如果您想恢复迁移,可以使用 rollback 命令之类的命令。 Read more about migrations here.
【解决方案2】:
您可以在db/schema.rb 中看到您的数据库结构,它将显示您应用中当前的所有表、列和索引。
如果您经常更改列,则没有那么有用,但您也可以运行 rake db:migrate:status,它将输出所有迁移的列表,并告诉您它们是否已运行。