Estoy creando una aplicación basada en Devise, CanCan y Rolify para manejar recursos privados.Rieles Agregar Rol rol a través del formulario de usuario
El registro de diseño se ha deshabilitado porque no quiero permitir que los usuarios registren, mientras estoy creando una interfaz de administrador para agregar/editar usuarios.
Ahora me ocupo del rol de usuario. Me gustaría permitir que el administrador cree usuarios y establezca su función con el mismo formulario. No sé qué tipo de relación está usando rolify porque soy bastante nuevo en rails y Ruby y rolify agregaron el método rolify
en lugar de una relación más clara.
Actualmente necesito y quiero tener solo un rol por usuario. Entonces, si alguien edita al usuario cambiando la función, borro todos @user.roles
y luego configuro el nuevo.
Actualmente estoy haciendo que funcione usando un simple truco. He agregado un campo de selección al formulario, usando una colección de Role
s para proporcionar una selección de roles. A continuación, dentro de los métodos create
y update
que estoy haciendo esto:
role = params[:user][:role]
params[:user].delete :role
@user = User.new(params[:user])
respond_to do |format|
if @user.save # update_attributes inside update
@user.add_role role
# ...
end
end
Como se puede ver que no estoy interactuando con el modelo Role
directamente, sino mediante el método proporcionado add_role
. Esto también crea otro problema, porque tengo que recuperar la función actual para permitir que la vista de actualización establezca el valor predeterminado adecuado para la selección (además del hecho más importante de que no sé cómo validar la presencia de UNA función).
Esto va a ser una solución demasiado sucia, por lo que me gustaría tener algún punto de vista, y tal vez alguna sugerencia sobre cómo hacer esto. Me he pasado todo el día trabajando en este :-(
Si necesitas información que me pueden solicitar.
PS estoy viendo una screenscast acerca de los recursos anidados, pero en el PP me puede ver que se trata de utilizar una tercera tabla para realizar un seguimiento de users_roles
y no voy a entender cómo hacerlo. Gracias !!
lol ... terminé yendo por su camino, Rolify Gem estaba tomando demasiado tiempo para averiguarlo. – Benjamin
jajaja, buena. Sigue siendo una herramienta válida, estoy seguro, pero para cosas simples, creo que es mucho más fácil crear un campo simple de cadena/entero. –