Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/12/2009, 18:08
alr11389
 
Fecha de Ingreso: julio-2009
Mensajes: 36
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: roles de usuarios

Estaba pensando en hacer una migración en la que añado a la base de datos la columna "Rol" a usuarios.

A Rol lo asigno como string, y como mi rol es sencillo, podría poner en el modelo usuario:

ROL = [
["administrador", "admin"],
["usuario", "usuario"]
]

y en el formulario asignar ese campo como oculto y que por defecto sea usuario(o que solo pueda crear un usuario administrador un administrador, o ya se me ocurrirá algo jeje).

A partir de ahi solo me quedaría comprobar con un if si el rol del usuario es admin o usuario para mostrar un menú u otro.

No sé si os parecerá estupido que no sepa hacerlo, pero esque no sé jaja.

Actualmente para las sesiones las compruebo con "if session[:usuario_id]" pero para lo otro ni idea... y eso que probé con:

if @usuario.rol == "usuario"
if usuario.rol == "usuario"
if Usuarios.rol == "usuario"

con bucles para recorrer el array usuario, con comillas simples y dobles.. de todo jaja. A ver si alguien me echa ese pequeño guante(y si tiene alguna sugerencia sobre mi modo de hacer el rol, mejor)

gracias

EDITO: esque no lo entiendo. Mi helper respecto a la vista tiene:

def comprobar_admin
usuario= Usuario.find_by_id(session[:usuario_id])
if usuario.id == "1"
return true
else
return false
end
end

En este caso no tengo aun definido la propiedad Rol y lo estoy probando por medio de la id del usuario.

En la vista tengo:

<% if session[:usuario_id] %> #para comprobar que se ha iniciado sesion
<% if comprobar_admin %>
#aqui escribo el codigo en el caso de que sea administrador
<% end %>
<% end %>

Yo creo, que por logica, deberia funcionar.. pero que va.. al menos no da ningun error. Segun el resultado, parece como que nunca nadie es administrador.

Anda! mira, con el id no funciona, pero con el nombre de usuario si. Que raro, bueno.. al menos funciona y esto podria servirle para alguien en un futuro.

Última edición por alr11389; 31/12/2009 a las 19:33