为什么新的Rails db迁移文件以时间戳而不是序列号开头?

时间:2009-03-15 01:45:39

标签: ruby-on-rails ruby

每当我使用script / generate生成一个新的脚手架来更改我的Rails数据库时,新的迁移文件会以日期戳(例如200903140912_create_users.rb)而不是序列号(例如004_create_users.rb)为前缀。< / p> 然后,我必须手动更改文件名以适应其余的迁移文件。

有谁知道如何解决这个问题?

系统:Mac OS X Leopard 10.5.6
Rails:v2.2.2
Ruby:v1.8.6

4 个答案:

答案 0 :(得分:8)

这是在Rails 2.1中引入的。根据{{​​3}},您可以通过在config.active_record.timestamped_migrations中将false设置为config/environment.rb来还原它。

答案 1 :(得分:5)

我不确定他们为什么做出决定,但我可以告诉你它是如何让我的生活变得更轻松。在团队中,两个人在大致相同的时间创建迁移是很常见的。如果最后一次生产迁移是007,那么两个新的迁移都将是008.第二个提交的人会在尝试解决问题时头疼,并且时间戳使得冲突的可能性大大降低。

答案 2 :(得分:2)

做出决定是因为当人们在同一个项目上一起工作时,他们经常会尝试使用他们的新变化创建迁移。这将导致两个人在同一个项目上进行单独更改但同时生成具有相同编号的迁移的问题。 Rails核心团队决定将其更改为UTC时间戳,因为它不太可能(但仍然可能!)两个(或更多)开发人员将在同一秒内创建迁移,而不是相同的序列。

答案 3 :(得分:2)

值得一提的是,使用UTC时间戳有助于在开发人员处于不同时区时运行迁移的顺序。