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冊そういう本を買っておいてもいいかも。