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_at
、updated_at
というカラムも存在していますが、これはRailsが標準で準備する、データの作成/更新日時を記録するカラムです。また、schema_migrations
テーブルはmigrationステータスを格納する管理用テーブルです。
次のページでは作成された画面とコードを見比べながら、RailsのルーティングとMVCのデータフローを理解していきます。