Estoy usando Devise en una aplicación Rails 3, pero en este caso, un usuario debe ser creado por un usuario existente, que determina qué permisos tendrá.
Debido a esto, quiero:
- Para eliminar la ruta para que los usuarios se registren .
- Para seguir permitiendo a los usuarios editar sus perfiles (cambiar la dirección de correo electrónico y la contraseña) después de haberse registrado
¿Cómo puedo hacer esto?
Actualmente, estoy eliminando efectivamente esta ruta colocando lo siguiente antes devise_for :users
:
match 'users/sign_up' => redirect('/404.html')
Eso funciona, pero me imagino que hay una mejor manera, ¿verdad?
Actualizar
Como dijo Benoit Garret, la mejor solución en mi caso es omitir la creación de las rutas de registros en masa y simplemente crear las que realmente quiero.
Para hacer eso, primero corrí rake routes
, luego usé el resultado para volver a crear los que quería. El resultado final fue este:
devise_for :users, :skip => [:registrations]
as :user do
get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'
put 'users' => 'devise/registrations#update', :as => 'user_registration'
end
Tenga en cuenta que:
- Todavia tengo
:registerable
en miUser
modelo devise/registrations
maneja la actualización de correo electrónico y contraseña- La actualización de otros atributos de usuario (permisos, etc.) es manejada por un controlador diferente
Respuesta real:
Elimine la ruta para los caminos de diseño predeterminados; es decir:
devise_for :users, path_names: {
sign_up: ''
}
https://example.com/users/
. Vea mi respuesta a continuación.