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将被执行直到你的数据库
是最新的版本。