Scaffold

Scaffoldは数行のコマンドによりデータベース内のデータを保守するためのプログラムを生成する機能です。
データベースを利用する足場ということで、Scaffoldスキャフォールドと呼んでいます。

1.プロジェクトの生成
  ・NetBeansで[新規プロジェクト]を選択します。

  [ステップ1]プロジェクトを選択
   カテゴリ(C): Ruby
   プロジェクト(P): Ruby on Rails アプリケーション

  [ステップ2]名前と場所
   プロジェクト名(N): proj001
   プロジェクトの場所(l): D:\Rails_Projects
   プロジェクトフォルダ(D): D:\Rails_Projects\proj001
   Rubyプラットフォーム(P): Ruby 1.8.7-p72
   サーバー(S): WEBrick

  [ステップ3]データベース構成
   データベースアダプタ(P): mysql
   データベース名(D): proj001_development
   ユーザー名(M): root
   パスワード(W): *******

  [ステップ4]Railsのインストール
   Railsのバージョン: 2.2.2

  ・proj001が生成されます。
    

2.日本語環境の設定
  ・/config/environment.rbの編集
  ・/app/controllers/application.rbの編集

3.データベースの作成

4.モデルの作成
  住所録テーブルAddressを作成します。
  ・NetBeansで[生成]を選択
    

  ・Railsジェネレータでmodelを作成
   ジェネレート(G):model
   引数(A):Address   (モデル名の先頭文字は大文字とすること)
    

  ・テーブル作成プログラムの実装
   /db/miggrate/yyyymmddhhmmss_create_addresses.rbの編集

/db/miggrate/yyyymmddhhmmss_create_addresses.rb

class CreateAddresses < ActiveRecord::Migration
 def self.up
  create_table :addresses do |t|
   t.string :namae
   t.string :yubin, :limit => 8
   t.string :jusho
   t.string :denwa, :limit=>20

   t.timestamps
  end
 end


 def self.down
  drop_table :addresses
 end
end

5.マイグレーションの実行
  [データベースマイグレーション]より[現在のバージョンへ]を選択する
    

6.テーブル保守プログラムの作成
  テーブルの追加削除変更のプログラムを一から作ることは可能ですが、それなりに時間が必要です。
  しかしRailsには一発でそのプログラムを生成してしまうScaffold機能を内蔵しています。
  ここではそれを利用します。

  ・Scaffoldの実行
   NetBeansで[生成]を選択します。
   ジェネレータ(G): scaffold
   モデル名(M): Address
   属性ペア(フィールド型)(A):namae:string yubin:string jusho:string denwa:string
    

7.生成されたプログラムの実行
  ・ブラウザからhttp://127.0.0.1:3000/addresses/で起動します。
    

  ・New addressをクリックしてデータを数件入力しましょう。
    

  ・その後すべての動作を確認します。
    

8.URLとアクションの対応付け
  Scaffoldで生成されたコントローラの中身を覗くと次のアクションが実装されていることが分かります。
    index / テーブルの一覧表示
    show / レコードの表示
    new / レコードの新規登録
    edit / レコードの編集
    create / レコードの新規登録実行
    update / レコード編集の実行
    destroy / レコードの削除    

  RailsではURLとコントローラ、アクションがデフォルトで対応付けられています。
    http://127.0.0.1:3000/controller/action/

  なお、/config/routes.rbでこの対応をカスタマイズすることができます。