技术开发 频道

DB2与Ruby on Rails入门


步骤 4:管理逐渐增长的共享文档集合

    如果有一种方式来对社区所贡献的大量文档进行分类,以便添加基于内容主题的分类学,那么显然很有帮助。SUBJECTS 表将被创建,以帮助对文档进行分类。一个主题可以包含很多文档,但是每个文档只能属于一个主题。为了演示 SUBJECTS 与 DOCUMENTS 之间的这种一对多的关系,需要将一个 Subject ID 外键添加到 DOCUMENTS 中。

    下面是执行这些任务所需的步骤:

a) 运行ruby script/generate migration create_subjects_table,这将创建 db/migrate/004_create_subjects_table.rb 文件。

b) 像下面这样编辑 db/migrate/004_create_subjects_table.rb:

清单 19. 创建 SUBJECTS 表
class CreateSubjectsTable < ActiveRecord::Migration
            def self.up
            create_table :subjects do |t|
            t.column :name,         :string,     :limit => 20
            t.column :size,         :integer
            t.column :description,  :text
            t.column :tag,          :string,     :limit => 10
            end
            add_column    :documents, :subject_id, :integer
            end
            def self.down
            drop_table    :subjects
            remove_column :documents, :subject_id
            end
            end

c) 运行rake db:migrate,以创建 SUBJECTS 表并添加subject_id外键。

d) 运行ruby script/generate scaffold subject,为 SUBJECTS 表生成 scaffold。

e) 添加has_many :document关联到新生成的 /app/models/subject.rb 文件中。

清单 20. 添加关联到 subject 模型中
class Subject < ActiveRecord::Base
            has_many :document
            end

f) 再添加一个关联belongs_to :subject到步骤 3(d) 中生成的 /app/models/document.rb 文件中。

清单 21. 添加关联到文档模型中
class Document < ActiveRecord::Base
            belongs_to :userbelongs_to :subject<... code to assist with document uploading ...>
            <...                                        ...>
            end
            end
0
相关文章