http://rorwiki.hellopen.net/index.php?title=%E6%98%8E%E7%99%BDMigrations

ActiveRecordMigration允许你使用ruby去定义database schema的变化。

这有几种用途,如下:

1.团队开发-如果一个人改变了schema,其他的开发人员需要更新的时候,只要
运行“rake migrate”。

2.多台机器-如果你在台式机和笔记本电脑上开发,或者在不同的地方开发,migration
可以使你的开发保持同步。

如何使用migration

1.建立migration

运行:
ruby script/generate migration add_a_new_table

它将建立一个文件:

db/migrate/001_add_a_new_table.rb

2.编辑代码告诉它该做什么

class AddANewTable < ActiveRecord::Migration
    def self.up
      create_table :users do |table|
        table.column :name, :string
        table.column :login,  :string, :null => false
        # This column will contain an MD5 hash.
        table.column :password, :string, :limit => 32, :null => false
        table.column :email, :string
      end
    end

    def self.down
      drop_table :users
    end
  end
 
当migration新增一个版本,方法self.up将被执行。
self.down在需要的时候用来回滚所有的改变。
类名需要和migration名称相同,例如:db/migrate/001_add_a_new_table.rb
的类名为AddANewTable。

有效的字段类型:integer, float, datetime, date, timestamp, time, text,
    string, binary, and boolean。
    
设置字段参数:
    limit ( :limit => “50” )
    default (:default => “blah” )
    null (:null => false implies NOT NULL)
    
3.运行migration

rake migrate

它将建立一个“schema_info”表(如果数据库不存在该表),这个表是用来跟踪数据库当前
的版本。每个新的migration将是一个新的版本,每个新的migrations将被执行直到你的数据库
是最新的版本。