2013-04-26 20:08

scaffoldで簡単アプリ作成

Railのscaffoldという機能を使って簡単なアプリケーションを作ってみましょう。

ToDoアプリを作ります。

準備

rails new 〜 bundle install

まずrails new。
アプリケーション名は何でもいいのですが、とりあえず「todo」とします。

ターミナル
$ rails new todo
      create  
      create  README.rdoc
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
      create  app
      create  app/assets/images/rails.png
         .
         .
         .

んでbundle install。

ターミナル
$ cd todo
$ bundle install
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Using rake (10.0.4) 
      .
      .
      .
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

CRUDの実装

rails generate scaffold モデル名 フィールド名:データ型

次に「rails generate scaffold」でModel、View、Controller(頭文字を取ってMVCという)をまとめて作成し、データの登録、参照、更新、削除の機能を実装します。

scaffoldとは、Railsに用意されているジェネレータの1つです。
scaffoldはMVCをまとめて作成することで、データの 登録(Create)参照(Read)更新(Update)削除(Delete) の機能を自動生成してくれます。
この4つの機能は英語の頭文字をとって CRUD と呼ばれているようです。
最低限このCRUDが実装されていればWebアプリケーションとして機能します。

実際にscaffoldしてみます。

ターミナル
$ rails generate scaffold list title:string body:text

scaffoldの直後にモデル名を記述します。
モデル名というのがよくわからなければ、ここではとりあえずテーブル名だと思ってもらっていいです。
今回はとりあえず「list」に。
アプリケーション名と被らないように気をつけること。

モデル名に続けて「フィールド名:データ型」を記述する。
フィールド名はテーブルにおけるカラム名と置き換えていいと思います。
ここではstring型のtitleとtext型のbodyを作ります。
データ型についてはこちら ⇒ マイグレーションのデータ型

結果が、、、

ターミナル
      invoke  active_record
      create    db/migrate/20130426123557_create_lists.rb
      create    app/models/list.rb
         .
         .
         .
      invoke    scss
      create      app/assets/stylesheets/lists.css.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.css.scss

のような感じになればgood。

マイグレーション

rake db:migrate

マイグレーションとは、データベースの情報を更新する作業です。
実際にはscaffoldで自動生成されたマイグレーションファイルを実行してくれます。

scaffoldでテーブルとフィールドを作成しているのでこれをデータベースに反映させます。

ターミナル
$ rake db:migrate
==  CreateLists: migrating =================================================
-- create_table(:lists)
   -> 0.0040s
==  CreateLists: migrated (0.0042s) ===========================================

ブラウザで確認

rails server

さぁ、これで完了!
ブラウザで確認してみよう!

ローカルサーバーを立ち上げて、、

ターミナル
$ rails server
=> Booting WEBrick
=> Rails 3.2.12 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2013-04-26 22:11:24] INFO  WEBrick 1.3.1
[2013-04-26 22:11:24] INFO  ruby 2.0.0 (2013-02-24) [x86_64-darwin11.4.2]
[2013-04-26 22:11:24] INFO  WEBrick::HTTPServer#start: pid=2017 port=3000

ブラウザのURLを、、

http://localhost:3000/lists

にしてみると次のように作成したページが表示されます。

ToDoアプリ 初期画面

「Title」や「Body」というフィールド名が表示されています。
が、まだなんか達成感がないですね。

「New List」のリンクをクリックしてデータを入力してみましょう。

こんな感じになります。

ToDoアプリ サンプルデータ

やったー!
ちゃんとできました。
「Show」や「Edit」、「Destroy」などの機能も使ってみましょう。

使い終わったらサーバーを落としておきます。

control + c

で落とします。

以上!

scaffoldを使えばMVCが簡単に作成できますが、実際に複雑なアプリケーションを作ろうと思ったらscaffoldを使わずに個別にMVCを生成できた方が都合がいいことの方が多いです。

というわけでMVCそれぞれを個別に生成してみましょう。

続きは次回!
Modelクラスの自動生成
Controllerクラスの生成