RailsでWikiクローンを作る2.1

名前が気に入らない

だれか、いいキャッチください

始めに設計から

どんな設計をしたらいいのか数日悩んでしまいました。将来の複雑さに多少は耐えられる設計としたかったからです。
悩んだ末、悩まんでもいいんじゃないかっていう簡単な設計となりました。

モデル部分に、Wikiの投稿、編集、検索などを管理することに責務を持つ「wiki」クラスと、Wikiの1ページの状態を表し、ActiveRecordのサブクラスである「page」クラスです。

wiki ---> page << AcriveRecord

何はなくともデータベース

今回はMySQL(5.0)を使用してデータベースを作成していきます。
Rails設定より規約を重視していていろいろと従わなければいけないことがあります。最初にデータベースを作ろうとしているのもこの規約に従うためで、Railsが含んでいるO/RマッピングライブラリのActiveRecordがデータベースのメタ情報(テーブル名やカラム名)を利用してマッピングをしています。

また、Railsはデータベースの作成に関してもうるさく規約で固められています。テーブルの名前は英語で複数形、つまり「s」を付けます(ちなみにpersonの複数形はpeople。マジ!?って感じ)、なおかつプライマリキーがカラム名「id」で自動インクリメント属性の整数値を格納するフィールドである方が都合がいいです。

今回作成するテーブルはこんな感じ。Wiki名と内容、そして作成日時を保存するだけのシンプルなものです。

テーブル名: pages

カラム名 オプション コメント
id INTEGER PRIMARY_KEY AUTO_INCREMENT Railsの規約に従う
name VARCHAR(255) NOT NULL ページ名。Wikiではidではなくこのページ名でページの識別をする。
content TEXT NOT NULL ページ内容。Wikiソースが入る。
created_at TIMESTAMP   Railsが自動で作成日時をセットしてくれる。カラム名は「created_on」でもよい
updated_at TIMESTAMP   Railsが自動で更新日時をセットしてくれる。カラム名は「updated_on」でもよい