scaffoldを用いた機能の追加
このセクションでは、“scaffold”と呼ばれるアプリケーションの雛型を、Railsの自動生成機能を用いて作成する手順を解説します。"scaffold"を生成すると、任意のテーブルのCRUD機能(データの登録:CREATE、参照:READ、更新:UPDATE、削除:DELETE)を実現するプログラムの雛形と、テーブルを作成するためのマイグレーションファイルが構成されます。
<チュートリアルを進めるにあたって>
・アプリケーション名は"blog"、アプリケーションのルートフォルダは、"c:¥rails_apps¥blog"とします
・アプリケーションのルートフォルダのパスは、"RAILS_ROOT"と記載します
・コマンドプロンプトを用いた操作は、特別な指定がない限り全て"RAILS_ROOT"に移動した状態で行います
データベースの作成
ブログデータを保存しておくためのデータベースを作成します。コマンドプロンプトで「rake db:create」とタイプしてEnterキーを押下すると、database.ymlに設定されたデータベースを作成します。本チュートリアルでは、SQLiteにデータベースが作成されます。
c:\rails_apps\blog>rake db:create
db/development.sqlite3 already exists
“記事テーブル”の設計
ブログの記事を扱うテーブル(以降は"記事テーブル"と記します)を以下のとおり設計します。
"記事テーブル"の名前 : articles | ||
カラム名 | 格納する内容 | 役割 |
id | 記事のID | PRIMARY KEY |
title | 記事のタイトル | - |
content |
記事の本文 | - |
参考1:IDカラムの役割
Railsは、idという名前のカラムをPRIMARY KEY(主キー)として扱うよう設計されています。
参考2:テーブル名とモデルクラス名
Railsは、デフォルトでテーブル名とモデルクラス名に以下の命名ルールを適用します。
・テーブル名:扱うデータを表す複数形の単語(例:"記事"=>"articles"、"ユーザー"=>"users")
・モデルクラス名:テーブル名の単数形の単語、先頭は大文字(例:"articles"=>"Article"、"users"=>"User")
scaffoldの生成
記事テーブルを使ったアプリケーションの雛型(scaffold)を、Railsの自動生成機能を用いて生成します。
先ほどの記事テーブルの設計に従って、コマンドプロンプトで「rails generate scaffold Article title:string content:text」とタイプしてEnterキーを押下します。PRIMARY KEYになる"id"カラムは指定しなくても自動的に作成されます。コマンドプロンプト上には、ファイル・フォルダが自動生成される様子が以下のように表示されます。
c:\rails_apps\blog>rails generate scaffold Article title:string
content:text
invoke active_record
create db/migrate/20111220045042_create_articles.rb
create app/models/article.rb
invoke test_unit
create test/unit/article_test.rb
create test/fixtures/articles.yml
route resources :articles
invoke scaffold_controller
create app/controllers/articles_controller.rb
invoke erb
create app/views/articles
create app/views/articles/index.html.erb
create app/views/articles/edit.html.erb
create app/views/articles/show.html.erb
create app/views/articles/new.html.erb
create app/views/articles/_form.html.erb
invoke test_unit
create test/functional/articles_controller_test.rb
invoke helper
create app/helpers/articles_helper.rb
invoke test_unit
create test/unit/helpers/articles_helper_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/articles.js.coffee
invoke scss
create app/assets/stylesheets/articles.css.scss
invoke scss
create app/assets/stylesheets/scaffolds.css.scss
記事テーブルの作成
自動生成によって作成された記事テーブルのマイグレーションファイル(※)を用いて、データベースにテーブルを作成します。
マイグレーションファイルを実行するには、コマンドプロンプトで、「rake db:migrate」とタイプしてEnterキーを押下します。
※記事テーブルのマイグレーションファイルは、上記の例では
"RAILS_ROOT\db\migrate\20111220045042_create_articles.rb"
です。ファイル名の数字の部分は、マイグレーションファイルを作成した日付と時刻から自動で数字が設定されています。
C:\rails_apps\blog>rake db:migrate
== CreateArticles: migrating =================================================
-- create_table(:articles)
-> 0.0000s
== CreateArticles: migrated (0.0000s) ========================================
作成した機能の動作確認
コマンドプロンプトで「rails server」とタイプしてEnterキーを押下し、アプリケーションの起動を確認したら、Webブラウザで「http://loacalhost:3000/articles」にアクセスします。scaffoldによって、記事テーブルのCRUDが実装されていることを確認することができます。
記事データの一覧表示
「http://loacalhost:3000/articles」にアクセスすると、「記事データの一覧画面」が表示されます。
※まだ記事が登録されていないため、以下のような表示になります。
(記事データの一覧画面)
記事データの新規作成
「記事データの一覧画面」で、「New Article]と書かれたリンクをクリックすると、「記事データの新規作成画面」が表示されます。
タイトル(Title)と、内容 (Content)を入力してから「Create Article」ボタンをクリックします。
(記事データの新規作成画面)
記事データの新規作成が完了すると、以下のように画面に表示されます。「Back」と書かれたリンクをクリックして「記事データの一覧画面」に戻ります。
「記事データの一覧画面」には、先ほど登録した記事データが表示されます。
(記事データの一覧画面 : 記事データの新規作成後)
記事データの更新
「記事データの一覧画面」で、一覧の右側にある「Edit」と書かれたリンクをクリックすると「記事データの更新画面」が表示されます。
タイトル(Title)や、内容 (Content)の内容を変更してから「Update Article」ボタンをクリックします。
(記事データの更新画面)
記事データの更新が完了すると、以下のように画面に表示されます。「Back」と書かれたリンクをクリックして「記事データの一覧画面」に戻ります。
記事データの削除
「記事データの一覧画面」で、一覧の右側にある「Destroy」と書かれたリンクをクリックします。
確認用のダイアログが表示されますので「OK」ボタンをクリックすると、記事データが削除されます。
「トップページ機能の追加」に続きます。