前回は、実用期を迎えたRuby on Rails 3をインストールし、Webアプリケーションの“骨格”を作るところまでを作業しました。

 多少なりとも見栄えが整ってきたところで、そろそろ勤務情報を格納するためのデータベースと、これを操作するためのモデルクラスを作成していきましょう。モデルクラスは、Model-View-Controllerの中でまだ手を付けていないModelの部分です。このサンプルでは、図1のようなデータベースを利用します。

図1●データベース関連図。employees、states、departmentsという三つのテーブルを作成する
[画像のクリックで拡大表示]

データベースの準備

リスト1●テーブルとモデルの作成
[画像のクリックで拡大表示]

モデルクラスとデータベースの作成
 employees、states、departmentsの各テーブルと、これを操作するためのモデルクラスを作成するには、rails generate modelコマンドとrake db:migrateコマンドを利用します(リスト1)。

 コマンドも少し複雑になってきましたが、「rails generate model モデル名」の後で指定しているのは、「列名:
データ型 ...」の繰り返しですので、難しいことはありません*1。間違えないように入力してください。Railsでは、テーブル名を複数形で、対応するモデル名を単数形で表すのが基本です(サンプルの例では、employeesとemployeeのように、です)。また、id(主キー)、created_at、updated_at列は自動的に生成されますので、コマンドから明示的に指定する必要はありません。

 これで/db/development.sqlite3というデータベースにemployees、states、departmentsの各テーブルが、そして、/app/modelsフォルダにはemployee.rb、state.rb、department.rbといったモデルクラスができました。

 できあがったstate.rb、department.rbはそれぞれ、リスト2リスト3のように編集しておきます。「has_many :employees」とは、State(状態)やDepartment(部門)一つに対して、Employee(従業員)が複数いる、つまり「1対n」の関係にあることを表しています。

リスト2●state.rbに追加する内容
[画像のクリックで拡大表示]
リスト3●department.rbに追加する内容
[画像のクリックで拡大表示]

テストデータの準備
 もっとも、テーブルを用意しても肝心のデータがなくては、動作の確認にも不都合です。テストデータを準備しておきましょう。

リスト4●employees.ymlの内容
[画像のクリックで拡大表示]

 テストデータは「/test/fixtures/テーブル名.yml」というファイルに準備します。リスト4に、具体例を示しておきます。自分でデータを作成する際の参考にしてください。ここでは、配布サンプルに含まれているファイル(employees.yml、departments.yml、states.yml)を/test/fixturesフォルダにコピーして利用するものとします。

 テストデータをデータベースに投入するには、
> rake db:fixtures:load
を実行するだけです*2

この先は会員の登録が必要です。有料会員(月額プラン)は登録月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら