第2回 Rails専用IDE「RadRails」でRailsをもっともっと快適にRuby on Rails究極指南(2/3 ページ)

» 2007年03月12日 07時00分 公開
[高橋征義,ITmedia]

新規プロジェクトの作成

 今度は新規プロジェクトとして、簡単なアンケート投票システムを作ってみます。

enqueteプロジェクトの生成

 先ほどと同様に、[File]メニューから「New...」を選択し、さらに[Rails]-[Rails Project]を選択します。次に、新規Railsプロジェクト作成用のダイアログで、プロジェクト名に「enquete」と入力して[Finish]ボタンをクリックすると、enqueteプロジェクトが生成されます。

データベース

 続いてデータベースの作成ですが、データベースの情報を見るにはphpMyAdminを使用します(図4)

図4 図4 phpMyAdminのメニュー画面

 Instant RailsのApacheが実行されている状態でWebブラウザから「http://localhost/mysql/」にアクセスすると、phpMyAdminのメニュー画面が表示されます。ただ、初期設定では日本語の場合に問題があるため、修正が必要です。Instant Railsのインストールディレクトリにあるphpmyadmin/lang/japanese-utf-8.inc.phpファイルの9行目を、

$charset = 'UTF-8';

$charset = 'utf-8';


と小文字に変えてください。これで正しく表示される*ようになります。

 enquete用のデータベースは、以下のような命名規則があります。

  • 開発用:enquete_development
  • テスト用:enquete_test
  • 本番用:enquete_production

 まずは開発用データベースを作成します。phpMyAdminのメニュー画面で、「新しいDBを作成します」という表示の下のフォームに「enquete_development」と入力し、[作成]ボタンをクリックします。これによって、enquete_developmentデータベースが作成されたはずです(図5)

図5 図5 データベースの作成

 テーブルの作成にはmigrationを使用します。まず、RadRailsのウインドウ下部にある「Generators」タブを選択し、左側のドロップリストで「migration」を選んで右側に「Enquete」と入力します(図6)。そして[Go]ボタンをクリックすると、db/migrate/ディレクトリ以下に001_enquete.rbファイルが作成されます。これがEnquete用のmigrationファイルです。このファイルには、反映させたいテーブルの内容を記述します。最初は単にメソッド名が書いてあるだけなので、ここに具体的な処理*を書いていきましょう(リスト1)

図6 図6 migrationの入力

class Enquete < ActiveRecord::Migration
    def self.up
        create_table :enquetes do |t|
                t.column :title, :string, :limit => 100, :null => false
                t.column :body, :string, :limit => 200
        end
        
        create_table :items do |t|
                t.column :enquete_id, :integer, :null => false
                t.column :name, :string, :null => false, :limit => 100
                t.column :count, :integer, :null => false, :default => 0
                t.column :created_at, :timestamp
                t.column :updated_at, :timestamp
        end
    end
    
    def self.down
        drop_table :items
        drop_table :enquetes
    end
end

リスト1 001_enquete.rbファイルに反映させたいテーブルの内容を記述

 この内容をデータベースに反映させるには、Instant Railsから「rake migrate」を実行します。InstantRailsのメインメニューから[Rails Applications]-「Manage Rails Applications...」を選択後、[Create New Rails App]ボタンをクリックすると、cmd.exeが立ち上がります。ここで、

> cd enquete

> rake migrate


と実行すると、データベースにテーブルが作成されます。

 phpMyAdminで確認してみましょう。画面左側のドロップリストから「enquete_development」を選択すると、enquetesテーブルとitemsテーブル、schema_infoテーブルができており(図7)、テーブルの中身を見てみると、id、title、created_at、updated_atの4つのカラムが存在するはずです。

図7 図7 migrateの実行結果

scaffold

 テーブルが完成したところで、scaffold*によってコードを生成します。画面右下で「Generators」タブを選択してから、左側のドロップリストで「scaffold」、右側に「Enquete Admin::Enquetes」と入力し、[GO]ボタンをクリックします。すると、scaffoldが実行され、enquete関連のファイルが生成されます(図8)

図8 図8 scaffoldの実行結果

 Cookbookと同様に、再度WEBrickを立ち上げてWebブラウザで「http://localhost:3000/admin/enquetes/」にアクセスすると、scaffoldで生成された画面が表示されます(図9)

図9 図9 scaffoldで作った管理画面へのアクセス

このページで出てきた専門用語

正しく表示される

詳細は「満足せる豚。眠たげなポチ」参照。

具体的な処理

この記述にはMigration専用DSL(DSLについては今後解説)を使用する。

scaffold

データモデルに対する最小限必要な操作(追加・削除・表示・一覧・編集)を行うインタフェースを実装する機能。


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ