Lo que planteas se puede hacer de muchas maneras. En función de qué
métodos uses en el controlador, necesitarás unas rutas u otras. Ten en
encuenta que:
map.resources :users
no es una ruta, son varias, ya que el método resources [1] realmente
te está generando rutas a dos 7 métodos de la filosofía REST:
GET /emails/ {:action=>“index”,
:controller=>“emails”}
GET /emails.:format/ {:action=>“index”,
:controller=>“emails”}
POST /emails/ {:action=>“create”,
:controller=>“emails”}
POST /emails.:format/ {:action=>“create”,
:controller=>“emails”}
GET /emails/new/ {:action=>“new”,
:controller=>“emails”}
GET /emails/new.:format/ {:action=>“new”,
:controller=>“emails”}
GET /emails/:id;edit/ {:action=>“edit”,
:controller=>“emails”}
GET /emails/:id.:format;edit/ {:action=>“edit”,
:controller=>“emails”}
GET /emails/:id/ {:action=>“show”,
:controller=>“emails”}
GET /emails/:id.:format/ {:action=>“show”,
:controller=>“emails”}
PUT /emails/:id/ {:action=>“update”,
:controller=>“emails”}
PUT /emails/:id.:format/ {:action=>“update”,
:controller=>“emails”}
DELETE /emails/:id/ {:action=>“destroy”,
:controller=>“emails”}
DELETE /emails/:id.:format/ {:action=>“destroy”,
:controller=>“emails”}
Para ver las rutas con las que estás trabajando en un momento dado te
recomiendo que hagas:
$ ruby script/console
rs = ActionController::Routing::Routes
puts rs.routes
Si cambias el routes.rb puedes hacer:
rs.reload
Yo lo que te recomiendo, para no alejarte de la filosofía REST es que
tengas una única ruta para editar el usuario. Eso sí, de alguna manera
tendrás que tener en cuenta la seguridad. Tienes que evitar, por
ejemplo, que un usuario no admin pueda construirse y enviar un
formulario para hacerse admin.
Si ya trabajas con el plugin restful_authentication [2] te recomiendo
utilizar, para la gestión de roles, el plugin acl_system [3]. Funciona
muy bien y es muy sencillo.
Salu2,
Javi
[1]
http://api.rubyonrails.org/classes/ActionController/Resources.html#M000176
[2] http://agilewebdevelopment.com/plugins/restful_authentication
[3] http://agilewebdevelopment.com/plugins/acl_system
2007/9/27, Mario S. [email protected]: