Rails中的DB Migration是通过db/migrate下的rb脚本来完成的。这些migrate的脚本可以通过手动来维护,但是推荐的方法应该让Rails自己来生成相应的rb文件。在Rails中有两种方式来生成:
1. 使用generator生成model时,同时生成对应这个model的migrate文件。例如:ruby script/generate model discount。(如果使用--skip-migration的选项则不会生成相应的migrate文件)
2. 直接使用generator来生成migrate文件,例如:ruby script/generate migration add_price_column。
migrate 文件的名称有14位的数字开头,即所谓的UTC时间(起首4位数字表示年份,然后以5组2位数字分别表示月份,日期,小时,分钟,秒数)加下划线,加上这个文件中使用的类的名称。类名称中的单词以下划线分隔。如果该migrate文件是由generate model产生的,则名称为create_加上model的复数形式。如果是由generator直接产生的则以generate命令后的参数决定。(例如:ruby script/generate migration add_price_column中产生的名称就为add_price_column)。
rake db:migrate
执行某个特定的migrate文件
如果使用VERSION执行某个特定的migrate文件时,Rasil会按照以下的顺序进行工作:
当指定的VERSION参数比schema_migrations表中存储的某些记录小,情况则会有些不同.Rails会从数据库中找出那些UTC编号比制定VERSION大的那些记录,并按照UTC编号从大到小 undo 这些migrate文件.