ruby on rails 4 - ¿Necesito un controlador de "Usuarios" cuando utilizo Devise en Rails?
ruby-on-rails-4 railstutorial.org (1)
Solo necesita un controlador de usuarios si desea administrarlos por separado del proceso normal de registro / actualización. Tengo un controlador de usuarios para que los administradores puedan administrar (crear, editar, actualizar, eliminar) usuarios independientemente del proceso normal de registro / actualización del dispositivo.
El conflicto con el devise_for :users …
probablemente se deba a que tiene un devise_for :users …
en su archivo de rutas para configurar el dispositivo y también tiene resources :users
para su UsersController. Esto significa que el dispositivo y su UsersController intentarán compartir algunas de las mismas rutas /users
. Debe separarlos cambiando la ruta a la que está asignado uno de ellos. Podría agregar, por ejemplo devise_for
:path => ''u''
a su declaración devise_for
para que las rutas de los devise_for
se asignen a /u
y no entren en conflicto con su UsersController en /users
. Alternativamente, puede dejar el devise_for
solo (por lo tanto, todavía usa /users
) y en su lugar, cambiar el enrutamiento de UsersController a, por ejemplo, resources :users_admin, :controller => ''users''
que moverían las rutas de UsersControllers para ser asignadas a /users_admin
. Tenga en cuenta que esto cambiaría los ayudantes de ruta, por ejemplo, users_path
a users_admin_path
.
ACTUALIZAR
Después de su comentario / edición, he echado un vistazo rápido al tutorial y creo que el diseño básicamente le brinda la funcionalidad equivalente de la funcionalidad relacionada con el usuario que se desarrolla desde la sección 5.4 hasta las secciones 9.1 o 9.2. (más algunas cosas adicionales, por ejemplo, confirmación de correo electrónico, restablecimiento de contraseña, bloqueo de cuenta, etc.). Sin embargo, eso no significa que sea un reemplazo directo de esa funcionalidad, si desea probar y combinar Devise con ese tutorial. Hay algunas cosas que parecen funcionar (por ejemplo, Devise también define un método current_user
), pero las rutas, etc. serían diferentes, y el dispositivo divide las cosas en más controladores (controladores separados para el registro, inicio y cierre de sesión, restablecimiento de contraseña) ...). La funcionalidad de tipo de administrador (como en las secciones 2.2, 9.3, 9.4 - crear / editar / eliminar / listar otros usuarios) es para lo que he agregado un UsersController separado en mi aplicación. Devise no define un UsersController, pero utiliza las rutas de los users
si lo hace devise_for :users
sin una ruta como mencioné anteriormente.
Entonces, más específicamente:
- Solo necesitaría un UsersController si desea habilitar la funcionalidad de tipo administrador que le permite ver / editar / eliminar a todos los usuarios.
- Si quisiera usar el dispositivo en el tutorial, probablemente necesitaría un poco de trabajo para ajustar las cosas, cambiar los enlaces de ayuda en las páginas, etc. Lo siento, no soy más específico; No he hecho ese tutorial.
Te estarías perdiendo la comprensión adicional de hacerlo todo manualmente, pero idear es un motor popular, por lo que también es bueno saberlo. Si tiene tiempo, puede hacer el tutorial por completo, y luego nuevamente con inventar! Te ayudaría a entender algunas de las cosas que el dispositivo está haciendo detrás de escena. PD: Puede ser instructivo mirar el código fuente del dispositivo, incluso si no lo entiende todo de inmediato.
Soy un novato de Rails. Estoy trabajando en un pequeño proyecto Rails4 tratando de mejorar mis habilidades. Estoy siguiendo libremente el tutorial de M.Hartl .
Según el tutorial, se construye una autenticación de usuario personalizada. Sin embargo, me gustaría usar Devise para la autenticación del usuario. ¿Todavía necesito tener un controlador de Usuarios como en el tutorial? ¿En qué casos debo usar / no usar un controlador de Usuarios cuando ya estoy utilizando Devise?
Con respecto al tutorial, ¿simplemente me salto la parte generadora del controlador o tengo que asignar las acciones a Devise?