Ruby/Rubyの基礎知識

RailsでTwitterクローンを作る(1) -- Scaffoldでひな形を生成(2ページ目)

何回かに分けて、Railsで少し実践的なアプリケーションを制作する流れを説明していきます。今回はRailsのScaffold機能を使い、アプリケーションのひな形を生成します。

橋本 拓也

執筆者:橋本 拓也

Rubyガイド

scaffoldの実行

Scaffoldは rails generate scaffold <Model> <field>:<type> というコマンドで実行します。例えば以下の例は、bodyというフィールドを持つ投稿(Post)モデルのscaffoldを作成しています。

大量のファイルが作成されたのがわかります。それぞれの役割は以下の通りです。

  • db/migrate/20140325013007createposts.rb
    • DBの変更(テーブル作成、カラム変更など)を行うマイグレーションファイル
  • app/models/post.rb
    • PostリソースのModelを定義する
  • test/models/posttest.rb, test/controllers/postscontroller_test.rb
    • ModelやControllerに対応するテストを記述する
  • config/routes.rb
    • ルーティング定義(ユーザのアクセスをControllerのアクションに割り振る)
  • app/controllers/posts_controller.rb
    • アクセスを受けて実行する処理を定義
  • app/views/posts/{index.html.erb,edit.html.erb,show.html.erb,new.html.erb}
    • 各アクションごとに用意されたHTMLのテンプレート
  • app/helpers/posts_helper.rb
    • Postリソースに関係するヘルパーメソッドを定義
  • app/assets/javascripts/posts.js.coffee
    • PostのViewで実行されるCoffeeScriptを記述
  • app/assets/stylesheets/posts.css.scss
    • PostのViewに適用されるスタイルを定義
  • app/assets/stylesheets/scaffolds.css.scss
    • Scaffoldで生成したテンプレート用のスタイル

migrationでDBを更新する

Railsの開発環境はデフォルトでsqlite3というデータベースを利用するようになっており、Rwitter/db/development.sqlite3がデータベースの本体です。

migrationはデータベースへの変更を抽象化し、rakeタスクdb:migrateで実行します。rakeについては過去の記事( RubyのMake、Rakeの使い方 [Ruby] All About )を参照してください。

これでデータベースが更新されました。sqlite3コマンドを使えばデータベースの中身を覗けるので、なにが出来たか見てみましょう。

Postリソースを格納する「posts」テーブルが作成され、text型のbodyというカラムが定義されているのがわかります。他にcreated_atupdated_atというカラムも存在していますが、これはRailsが標準で準備する、データの作成/更新日時を記録するカラムです。また、schema_migrationsテーブルはmigrationステータスを格納する管理用テーブルです。

次のページでは作成された画面とコードを見比べながら、RailsのルーティングとMVCのデータフローを理解していきます。

  • 前のページへ
  • 1
  • 2
  • 3
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます