Aptana RadRails を使った Scaffold の作成(RAILS 2.0 の場合)

どうも『RailsによるアジャイルWebアプリケーション開発 第2版』の6.1章の通りにやっても Scaffold がうまく作成されないようなので、Rails 2.0 流のやり方をメモしておく。

  • phpMyAdmin で depot_development という名のデータベースを作っておき、RadRails で新規 Rails プロジェクトとして depot を作成
  • depot/config/database.yml ファイルを開いてデータベースのユーザー名、パスワード、ソケットなどを適切に設定

本ではこのあと、モデルの作成(データベースマイグレーション)、コントローラーの作成、Scaffold の作成と進むことになっているのだけど、Rails 2.0 の場合、ここを scaffold 一発でやってしまえばいいみたい。

Ruby エクスプローラーで depot プロジェクトが選択されていることを確認した上で、「ジェネレーター」タブから scaffold を選択、パラメーターに

product title:string description:text image_url:string

と入れて実行。

これでマイグレーションファイル(db/migrate/20080427053115_create_products.rb)、コントローラーファイル(app/controllers/products_controller.rb)も一気に生成される。

>script/generate scaffold product title:string description:text image_url:string
      exists  app/models/
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/products
      exists  app/views/layouts/
      exists  test/functional/
      exists  test/unit/
      create  app/views/products/index.html.erb
      create  app/views/products/show.html.erb
      create  app/views/products/new.html.erb
      create  app/views/products/edit.html.erb
      create  app/views/layouts/products.html.erb
      create  public/stylesheets/scaffold.css
      create  app/controllers/products_controller.rb
      create  test/functional/products_controller_test.rb
      create  app/helpers/products_helper.rb
       route  map.resources :products
  dependency  model
      exists    app/models/
      exists    test/unit/
      exists    test/fixtures/
      create    app/models/product.rb
      create    test/unit/product_test.rb
      create    test/fixtures/products.yml
      create    db/migrate
      create    db/migrate/20080427053115_create_products.rb

Rails 1.2 から 2.0 になって View のテンプレートファイルも、.rhtml ではなく .html.erb に変更になっているらしい。この辺りの変更箇所については、ここが参考になりそう。
Rails 2.0のscaffoldを使ってみた

教科書の例では admin コントローラーから product というモデルを操作するという構造になっているのだけど、2.0 の scaffold を使うとコントローラー名とモデル名も自動的に関連づけられるみたいだ(この場合はモデル名 product に対して、コントローラー名、View名が products と複数形になる)。

scaffold のあと、「Rake タスク」タブから db:migrate を実行すると、データベースにテーブルが作成される。

サーバー(WEBrick サーバー)を起動してブラウザーから http://127.0.0.1:3000/products にアクセスすると、空の Product リストが表示され、レコードの追加、修正、削除などのページが自動生成されていることが確認できた。

教科書も Rails 2.0 対応だったらよかったんだけど・・。けっこういろいろ変わっているようなので、もう1冊そういう本を買っておいてもいいかも。