scaffold_resource を使ってみた
2007/02/1
先ほどから Rails でチェックシートアプリケーションを作っています。チェック項目を登録して、チェック完了時にチェックしていくだけの単純なアプリケーションになる予定です。よく Excel でチェックシートを作りますが、項目ごとにチェック日時や担当者名を記入していくのは結構辛いです。
ところで、先ごろ Ruby on Rails 1.2 がリリースされ、いくつかの新しい機能が利用できるようになっています。その中に、アプリケーションをより RESTFul にするための機能が含まれています。こちらに、 Rails の作者 David Heinemeier Hansson が日本 Ruby カンファレンス 2006 で Rails と REST について話した内容がまとめてあります。
今回、この機能を使ってみました。
具体的には、チェックシートを表すモデルを操作する場合、従来は
ruby script/generate scaffold Sheet
としたあとでマイグレーションファイルを編集していたところを、
ruby script/generate scaffold_resource Sheet name:string
などとするだけで、name 属性が定義された Sheet モデルと、Sheet に RESTFul にアクセスできる名前付きルートが追加されます。ルーティング設定ファイル routes.rb には
map.resources :sheets
という設定が追加されており、この一行で RESTFull なアクセスを補助する名前付きルートが設定されます。
名前付きルート | コントローラ | アクション |
sheets | SheetsController | index (GET の場合) create (POST の場合) |
sheet | SheetsController | show (GET の場合) update (PUT の場合) delete (DELETE の場合) |
new_sheet | SheetsController | new |
edit_sheet | SheetsController | edit |
同じ名前付きルートでも、どの HTTP メソッドが指定されたかによって呼び出されるアクションが異なります。詳しくは ActionController::Resources の API リファレンスに書いてあります。
このように、従来の scaffold とかなり異なっているため、慣れるまでは余計に時間がかかってしまいそうですが、確かに記述量が少なくなって DRY になるかもしれません。またリソース操作が CRUD に限定されやすくなるのは、Rails 的には良いことなのでしょう。
2007/03/17 at 8:33 pm
[…] scaffold とは異なり、REST 風味のリソース操作が可能になるというのは以前に書きましたが、scaffold_resource を利用すると、さらにリソースの XML […]