scaffold概要Railsには、コードを自動生成するジェネレータが複数用意されています。ここでは、「scaffold」というジェネレータを紹介します。scaffold(「足場」という意味)は、データベースのテーブルへの登録(CREATE)、参照(READ)、更新(UPDATE)、削除(DELETE)(英語の頭文字をとって、「CRUD」といいます)を行うWebアプリケーションのひな形となるソースコードを自動生成します。scaffoldを実行させれば、「足場」という名の通り、最低限のCRUDを行うWebアプリケーションを作成することができます。実際の開発においては、使用する機会が少ないかと思いますが、ここではRailsの基本構造を知るために利用します。scaffoldを実行した結果出来上がるアプリケーションは、以下のような画面遷移となります。scaffoldジェネレータの実行では、実際にscaffoldで、アプリケーションを作成してみましょう。できるアプリケーションにします。itemsテーブルでは、商品名(name)と、価格(price)と、商品説明(description)の3つのカラムを持つこととします。データベースは、前章に引き続き、SQLiteを利用します。コマンドラインを開き、前章で作成したC:\sampleの直下に、新しいRailsアプリケーション「scaffoldTest」を作成します。scaffoldTest作成できたら、scaffoldTestフォルダに移動し、以下のコマンドを入力します。generate」でも可能)※画面の都合上、コマンド途中で「^」を入力して改行しています。1行で入力していただいても結構です。これだけで、ソースコードが自動生成されます。生成されたファイルは、以下の通りです。テーブルの作成ほとんどのことは自動生成してくれるscaffoldですが、データベースのテーブルの作成は、自分で行う必要があります。データベースのコンソールを開いて、SQLでテーブルの作成をする必要はありません。Railsでは、テーブルの操作(作成・削除、カラムの追加・削除等)を行う際、マイグレーションを利用します。マイグレーションは、「マイグレーションファイル」と呼ばれるファイルにテーブル操作の内容を記載し実行します。これにより、テーブルの追加や変更が生じた際、DBを操作せずとも簡単に反映させることができます。scaffoldでコードを自動生成した際に、itemsテーブルを作成するためのマイグレーションファイルも生成されています。それが、「db\migrate\20110824061412_create_items.rb」というファイルです。(先頭の数値はタイムスタンプのため、皆さんの環境で行っていただいたものと異なります)詳しい記述については、後の章で説明をします。ここでは簡単に見ていきましょう。endendupメソッドとdownメソッドがあります。upメソッドで、itemsテーブルを作成します。カラムは、scaffoldを実行した際に指定した、name、price、descriptionを作成するようになっていますね。マイグレーションは、railsコマンドではなく、rakeコマンドを使います。Rakeとは、Rubyで実装されたビルドツールです。「タスク」と呼ばれる実行単位で処理を定義しておき、rakeコマンドを使って実行します。Ruby1.9をインストールすると、同時にインストールされていますので、再度インストールする必要はありません。Railsには、rakeコマンドで実行できるタスクが、すでにいくつか用意されています。今回行うマイグレーションもその一つです。以下のコマンドを入力して、マイグレーションを実行します。===========================================これだけで、テーブルが生成されています。アプリケーションへのアクセスでは、実際にアクセスしてみましょう。前章と同様に、サーバを起動します。sサーバが起動したら、indexページを開きましょう。以下のURLを入力してページを開きます。http://localhost:3000/itemsitemsテーブルの一覧画面が開きます。itemsテーブルは空ですので1件も表示されていません。Itemを押下すると、新規登録画面が開きます。Item」ボタンを押下すると、データが1件登録され、詳細画面に遷移します。一覧画面から詳細画面に行くこともできます。一覧画面、もしくは詳細画面の「Edit」を押下すると、編集画面に遷移します。削除の際は、一覧画面から「Destroy」を押下します。確認のダイアログボックスが表示され「OK」を押下すると削除されます。Rake::DSL」というエラーが表示された場合、rakeをバージョンダウンさせる必要があります。‘0.8.7’」を追加してください。rake」と入力し、コマンドを実行させるとバージョンダウンします。今回はSQLiteを利用していますので不要ですが、他のデータベースを利用する際は、テーブル作成の前にデータベースを作成する必要があります。db:create」というrakeコマンドを使って作成することができます。Textを触ってみた。