Chinaunix首页 | 论坛 | 博客
  • 博客访问: 482991
  • 博文数量: 112
  • 博客积分: 5696
  • 博客等级: 大校
  • 技术积分: 1720
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-17 09:58
文章分类

全部博文(112)

文章存档

2011年(22)

2010年(28)

2009年(21)

2008年(41)

分类: Python/Ruby

2011-11-05 15:09:41

每个迁移的任务有一个世界协调(UTC)的时间戳。

Rails会记住每一次作用于数据库的迁移任务的版本号,当你要求使用新的迁移任务更新数据结构的时候,它将可用的迁移任务版本号与schema_migrations表中的版本号进行对比,如果发现schema_migrations表中没有版本号,就会根据顺序逐步实施。

如何恢复数据库结构呢?  good querstion

为了解决这个问题,迁移任务是可逆的,每个迁移任务实际上是包含2组命令

1. 告诉Rails如何修改数据库
2. 告诉Rails如何撤销这些修改

运行db:migrate这个rake任务就可以运行迁移任务:

为了了解一起,先看看rails内部结构

在每个Rails数据库里,迁移任务会维护一张名为schema_migrations的表,其中只有version这么一个字段,每个成功实施一次迁移任务就会对应一条记录,当运行db:migrate时候,首先检查schema_migrations表,如果这张表存在,则创建。然后去查看db/migrate目录下的所有迁移任务文件。如果默写迁移任务版本号(也就是文件名以数字)不在数据库中,那么就依次执行这些任务,使他们作用于数据库,每次迁移完成后,schema_migrations表中会加一条存放版本号的记录

要编写迁移任务,只要继承  ActiveRecord:Migration即可。 包含up()和down()

class SomeMeaningfulName < ActiveRecord::Migration
def self.up
end
def self.down
end
end

类名  必须和 文件名 中版本号后面的部分相同 。 
上面的类应该对应 20101105162228_some_meaningful_name.rb文件中

字段类型
add_column 包括:string :binary :boolean : date  : datateime :decimal :float : integer :text : time :


阅读(2075) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~