【发布时间】:2013-07-06 10:22:17
【问题描述】:
我参加了几门关于 Rails 的课程,但我对迁移有一些不清楚的地方:
1.) 如果我生成一个迁移并运行它,无论我执行多少操作,rails 仍然会创建一个全新的架构版本吗?无论如何在迁移之前查看每个版本的架构?
2.) 如果我没有在迁移中定义 down 方法并且我尝试回滚,那么回滚会什么都不做吗?
3.) 我应该在运行迁移后删除它们吗?
【问题讨论】:
标签: ruby-on-rails migration schema
我参加了几门关于 Rails 的课程,但我对迁移有一些不清楚的地方:
1.) 如果我生成一个迁移并运行它,无论我执行多少操作,rails 仍然会创建一个全新的架构版本吗?无论如何在迁移之前查看每个版本的架构?
2.) 如果我没有在迁移中定义 down 方法并且我尝试回滚,那么回滚会什么都不做吗?
3.) 我应该在运行迁移后删除它们吗?
【问题讨论】:
标签: ruby-on-rails migration schema
Migrate 会对您的架构进行增量更改。它知道(除非你把它填满)你的模式处于什么状态,并运行那些尚未运行的迁移。 例如如果您执行 drop create and migrate 然后第二次迁移,则第二次不会执行任何操作,因为它们都已完成。
No down 确实意味着回滚将无济于事。
您应该删除迁移的唯一情况是完全撤消更改。即您添加了一个模型,然后决定不需要它。
任何其他方法都意味着您无法从头开始实现架构。 例如您添加模型并迁移 然后你意识到你需要一个关系并做到这一点。删除添加表的迁移,事情变得非常糟糕。
【讨论】:
如果您运行 migrate 来创建表而不定义 down 方法,则不需要在 migrate 之后删除迁移文件,如果您尝试 rake db:rollback 它将恢复您上次执行的迁移,您可以在此处查看更多信息Migration
【讨论】: