これまでのところ、私が思いつくことができる最高のものはこれです:
map.resources :users
map.resources :users_by_login,
:controller => "User",
:only => [:show, :edit, :update, :destroy],
:requirements => {:by_login => true}
通常の RESTful ルートがユーザー用に作成され、その上に、users_by_login
リソースは次のルート (およびそれらのみ) を追加します。
GET /users_by_login/:id/edit
GET /users_by_login/:id/edit.:format
GET /users_by_login/:id
GET /users_by_login/:id.:format
PUT /users_by_login/:id
PUT /users_by_login/:id.:format
DELETE /users_by_login/:id
DELETE /users_by_login/:id.:format
これらのルートは実際には にもマッピングされますUserController
( show
// edit
/メソッドのみ)。追加のパラメーターが追加されます ( に等しい): このようにして、メソッドは、パラメーターがログインまたは ID を表しているかどうかを判断できます。update
destroy
by_login
true
UserController
id
それは仕事をしますが、もっと良い方法があればいいのにと思います。