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

ActiveRecordMigration允許你使用ruby去定義database schema的變化。

這有幾種用途,如下:

1.團隊開發(fā)-如果一個人改變了schema,其他的開發(fā)人員需要更新的時候,只要
運行“rake migrate”。

2.多臺機器-如果你在臺式機和筆記本電腦上開發(fā),或者在不同的地方開發(fā),migration
可以使你的開發(fā)保持同步。

如何使用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
?
當(dāng)migration新增一個版本,方法self.up將被執(zhí)行。
self.down在需要的時候用來回滾所有的改變。
類名需要和migration名稱相同,例如:db/migrate/001_add_a_new_table.rb
的類名為AddANewTable。

有效的字段類型:integer, float, datetime, date, timestamp, time, text,
????string, binary, and boolean。
????
設(shè)置字段參數(shù):
????limit ( :limit => “50” )
????default (:default => “blah” )
????null (:null => false implies NOT NULL)
????
3.運行migration

rake migrate

它將建立一個“schema_info”表(如果數(shù)據(jù)庫不存在該表),這個表是用來跟蹤數(shù)據(jù)庫當(dāng)前
的版本。每個新的migration將是一個新的版本,每個新的migrations將被執(zhí)行直到你的數(shù)據(jù)庫
是最新的版本。

?

?