RESTfulインタフェースと非RESTfulインタフェース

  resources :books

これで、リクエストURLが直接、booksテーブルの操作につながる(RESTful)わけですが、カスタムな操作を加えたいときは、これがちょっと邪魔です。

例えば、addnumアクションを呼び出したくて、

 /books/addnum

というリクエストをしても、

 /books/:id

とみなされます。RESTfulインタフェースとして、/books/:id はshowアクションを呼び出します。

従って、

 /books/show/addnum

という呼び出しに解釈されています。

気持ち悪いなー、と思ってたんですが、resources ルート定義しなきゃよいのですね。
resources ルート定義をやめて

 match '/books/addnum

あるいは

 match ':controller(/:action(/:id(.:format)))'

として、全ての操作を許容すればよいみたいです。

上の方法だと、アクション一個ずつ定義しなくちゃいけなくて少し面倒。
下の方法は、やりすぎな気がする。

どちらがよく使われるのだろう?