到目前为止,我能想到的最好的是:
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
)update
。destroy
添加了一个额外的by_login
参数(等于true
):这样,这些UserController
方法可以判断该id
参数是代表登录名还是 id。
它可以完成工作,但我希望有更好的方法。