Consejo para una de roles y permisos

Hola, había implementado un sistema de usuarios, roles y permisos
pero cuando lo he visto al cabo de unos días no me gusta nada, lo veo
poco DRY :frowning: les comento un poco por encima el código a ver que les
parece.

los modelos

usuarios (n:n con roles)
. nombre
. password

roles (n:n con permisos)
. nombre

permisos
. nombre (create, read, update, delete)

al principio de cada controlador tengo un
before_filter :dime_permisos que me devuelve un hash con los permisos
dependiendo del rol del que dispone el usuario,

@permisos = {“create” => true, “read” => true, “update” => true,
“delete” => true }

o de esta otra forma si no tiene todos los permisos

@permisos = {“create” => true, “read” => true }

hasta aquí mas o menos no me parece mal como lo tengo solucionado, lo
que no me termina de agradar es como lo resuelvo luego en cada método
de cada controlador, las comprobaciones las hago de la siguiente manera

def index
if @permisos.has_key?( “read” )

end
end

def create
if @permisos.has_key?( “create” )

end
end

def destroy
if @permisos.has_key?( “delete” )

end
end

que les parece? les parece que no es una mala
solución?Muchas gracias por las sugerencias.

Saludos.

creo que lo ideal sería que tu no tuvieras que hacer esa comprobación en
cada método si no que se hiciera de manera automática precisamente para
evitar esas repiticiones.
prueba a echarle un vistazo a este plugin que es muy sencillo de usar
para que veas como plantean la solución:
http://brainspl.at/articles/2006/02/20/new-plugin-acl_system

saludos

alarkspur
escribió:> Hola, había implementado un sistema de usuarios, roles y permisos

roles (n:n con permisos)
“delete” => true }
if @permisos.has_key?( “read” )
def destroy
[email protected]
simplelogica.net


/**