作者:Ryan Daigle 来源:JavaEye 酷勤网收集 2008-05-30
摘要
Rails的migrations数据迁移一直是争论的部分,一方面他们需要提供一个稳定一致的数据库支持,另外方面在频繁的开发过程中出现简单的命名冲突的时候数据迁移就会变得很混乱。Rails2.1将通过唯一的UTC-based timestamp来命名你的迁移,而不是sequential ordering序列号。
系列文章汇总《Ruby on Rails 2.1新特性》
Rails的migrations数据迁移一直是争论的部分,一方面他们需要提供一个稳定一致的数据库支持,另外方面在频繁的开发过程中出现简单的命名冲突的时候数据迁移就会变得很混乱。新的改变将通过唯一的UTC-based timestamp来命名你的迁移,而不是原来的sequential ordering序列号。
当你创建新的迁移,你可以看到下面这个:
- > script/generate migration one
- create db/migrate/20080402122512_one.rb
> script/generate migration one
create db/migrate/20080402122512_one.rb
而不是001_one.rb,这样的命名方法不容易出现冲突。
update:当你用SVN更新,并得到一个新的迁移,即使新的迁移时间比目前的早,但是,当你运行:db:migrate的时候,rails会聪明的应用到所有没有运行的迁移中。
另外一个功能修改是,能够用db:migrate:up 和 rake db:migrate:down运行升级和降级任务:
- > rake db:migrate:up VERSION=20080402122523
- == 20080402122523 Two: migrating ==============================================
- -- create_table(:two)
- -> 0.0122s
- == 20080402122523 Two: migrated (0.0124s) =====================================
> rake db:migrate:up VERSION=20080402122523 == 20080402122523 Two: migrating ============================================== -- create_table(:two) -> 0.0122s == 20080402122523 Two: migrated (0.0124s) =====================================


