在创建 DOCUMENTS 表之后,假设您决定存储关于每个文档的附加信息,例如操作系统平台、上传时间和最近更改时间。产生的 DOCUMENTS 表应该包含以下列(新添加的列用粗体标示)。
表 3. 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 等 |
Created_at | TIMESTAMP | 文件被上传的时间(见注 9) |
Updated_at | TIMESTAMP | 文档最近更新时间戳(见注 9) |
Platform | VARCHAR | 特定于文件平台的信息 |
然后生成第二个迁移,以便将这些属性添加到 DOCUMENTS 表中:
a) 运行ruby script/generate migration add_docs_attributes。
这样会生成 db/migrate/002_add_docs_attributes.rb 文件。
清单 10. 创建第二个迁移,以便将列添加到 DOCUMENTS 表中
D:\rails\teamroom>ruby script/generate migration add_docs_attributes exists db/migrate create db/migrate/002_add_docs_attributes.rb |
b) 像下面这样编辑 002_add_docs_attributes.rb:
清单 11. 查询 SCHEMA_INFO 表
class AddDocsAttributes < ActiveRecord::Migration def self.up add_column :documents, :created_at, :timestamp add_column :documents, :updated_at, :timestamp add_column :documents, :platform, :string, :limit => 10 end def self.down remove_column :documents, :created_at remove_column :documents, :updated_at remove_column :documents, :platform. end end |
c) 同样,发出rake db:migrate来执行第二个迁移。
清单 12. 运行第二个迁移,将附加列添加到 DOCUMENTS 表中
D:\rails\teamroom>rake db:migrate (in D:/rails/teamroom) == AddDocsAttributes: migrating =============================================== -- add_column(:documents, :created_at, :timestamp) -> 0.0500s -- add_column(:documents, :updated_at, :timestamp) -> 0.0100s -- add_column(:documents, :platform, :string, {:limit=>10}) -> 0.0000s == AddDocsAttributes: migrated (0.0600s) ====================================== |