DB2 与 Ruby on Rails 入门之一(3)

http://www.itjxue.com  2015-08-21 22:27  来源:未知  点击次数: 

  Team Room 例子

 

  现在可以开始执行实际的迁移步骤了。

  步骤 1:创建 Documents 表

  首先需要从一个存储区开始,使所有文档和媒体文件在这个托管应用程序的用户之间共享。因此,首先创建 DOCUMENTS 表,用于存储小组成员要共享的所有媒体文件。

  我们定义以下列来描述共享文件的内容:

表 2. DOCUMENTS 表列和描述

列名 数据类型 描述
ID Integer 主键
Name VARCHAR 文档名称
Size Integer 文件大小
Data BLOB 以二进制模式存储的文件,最大 2 M
Content_type VARCHAR 文档类型,包括 .doc、.ppt、.pdf、.sw、.exe、.a、.so、 .gif、.jpeg、.mov、.avi、.mpeg、.bmp 等

  a) 为了通过迁移的方式完成这个工作,执行 ruby script\generate migration create_docs_store,以生成表 DOCUMENTS 的迁移。Rails 生成迁移,并创建 db/migrate/001_create_docs_store.rb。在 UNIX 上,可以输入 ruby script/generate migration create_docs_store。(注意正斜杠 “/” 在 Windows 和 UNIX 上都适用。)

  清单 4. 运行 ruby 脚本/生成迁移 create_docs_store

  注意,001_ create_docs_store.rb. 是在 db/migrate 中创建的,并且被编号为 ‘001’。从这一步开始,对于每个迁移步骤,db/migrate 中生成的文件依次递增编号。这表明 Rails 正在管理迁移的次序。

  b) 像下面这样编辑 create_docs_store.rb:

  清单 5. 编辑 create_docs_store.rb

  注 6:默认情况下表名采用复数形式

  默认情况下 Rails 以复数形式为表命名。运行上述迁移将在 DB2 中创建一个名为 DOCUMENTS 而不是 DOCUMENT 的表。

  注 7: rake db:migrate 运行所有要应用的迁移。在这种情况下,只有一个要应用的迁移。

  在 Rails 应用程序中,模式的更改是通过迁移发生的。对数据库的每次更改都被进行版本控制,并在包含独立于供应商的语法的 Ruby 脚本中定义。而且,每个迁移脚本提供两个类方法:up 方法和 down 方法,这使得撤销更改与做出更改一样容易。对逻辑数据库模式做出更改所需的代码都放在 self.up 方法中。而撤销更改所需的代码都放在 self.down 方法中。

  c) 通过 rake db:migrate 命令运行迁移:

  清单 6. 运行第一个迁移,以创建 DOCUMENTS 表

  d) 现在进入到 DB2 命令提示符下,发出 db2 list tables for schema teamroom,以确认 DOCUMENTS 表已创建:

  清单 7. 列出被创建的 DB2 表

  注意,DOCUMENTS 表如预期般被创建,并且数据类型如下:

  清单 8. 检查为 DOCUMENTS 表创建的列

  注 8:主键的自动创建

  在 Rails 中,默认的主键列名是 id。不必显式地定义主键 ID 列,因为默认情况下 Rails 会自动这么做。

  还需注意,在这个迁移期间,Rails 还创建了一个名为 SCHEMA_INFO 的表。SCHEMA_INFO 是通过 rake db:migrate 命令创建的。查询 SCHEMA_INFO 表时可以得到如下输出:

  清单 9. 查询 SCHEMA_INFO 表

  version 列中的值 ‘1’ 表明当前的迁移版本为 1(还记得之前曾运行过的 db/migrate/001_ create_docs_store.rb 吗)。

  所以 rake db:migrate 实际上做以下事情:

  •   创建 SCHEMA_INFO 表(如果该表不存在的话),并将值 ‘0’ 插入到 version 列中。
  •   运行所有可应用的迁移。也就是说,运行编号大于当前迁移的所有迁移的 up 方法。第一个迁移从 version 值 ‘1’ 开始。
  •   通过运行最新版本的迁移更新 SCHEMA_INFO 表。在上述例子中,version 被更新为 ‘1’,因为它是这个 Rails 项目的第一个迁移。

(责任编辑:IT教学网)

更多

推荐数据库文章