Migration命名
1、文件名的格式为:
YYYYMMDDHHMMSS_create_products.rb
前面“YYYYMMDDHHMMSS”部分为UTC时间戳。
2、类名遵循驼峰式命名格式
如:CreateProducts
3、类名与文件名的后半部分保持一致
如果修改文件名,则必须修改文件中的类名,否则会报 missing class 的错误。
例如
文件名: 20080906120000_create_products.rb
对应类名:CreateProducts
文件名:20080906120001_add_details_to_products.rb
对应类名:AddDetailsToProducts
Migration任务总结
1、建立数据表:create_table
常配合使用方法为:add_column
例如: create_table :suppliers add_column :suppliers, :name, :string, {:limit => 60}
比较sexy的写法
create_table :suppliers do |t|
t.string :name,
end
2、变更数据表:change_table
常配合使用的方法为:
add_column 对应sexy写法:t.column 或者 t.string(integer...)
change_column
remove_column 对应sexy写法:t.remove
rename_column
change_column_default
add_index 对应sexy写法:t.index
remove_index 对应sexy写法:t.remove_index
rename_index
add_timestamps
remove_timestamps
3、重命名数据表:rename_table
Rake任务总结
1、单纯地执行所有还未执行的迁移任务中的up(或是change中的up)方法
rake db:migrate
指定版本:
rake db:migrate VERSION=20080906120000
2、执行最后一个迁移任务的down方法
rake db:rollback
指定最后几步的迁移任务,默认为最后一个:
rake db:rollback STEP=3
3、执行一个指定的migration的up或down方法,需指定版本号
rake db:migrate:up VERSION=20080906120000
rake db:migrate:down VERSION=20080906120000
它会首先确认这个migration之前有没有跑过,如果Active Record认为20080906120000已经跑过,那么执行 db:migrate:up VERSION=20080906120000将不会做任何操作。