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將被執行直到你的數據庫
是最新的版本。
?
?