Forum: Rails-ES determinadas acciones para determinado usuario

Posted by Alberto Lopez (alb3rtop)
on 2009-12-24 15:40
Buenas, estoy empezando con rails y ruby y ya tengo hecho, a traves de
documentaciones, para subir imagenes, posts, logear y registrar
usuarios..

Pero no tengo ni la más minima idea de hacer para que, por ejemplo, si
inicias sesion con el usuario A y vas a ver los comentarios de un post,
no salga la opcion de pinchar en Editar el comentario que escribió el
usuario B(no sé si me seguís.. xD)

No sé si habrá algun plugin para hacer eso.

gracias
Posted by Alberto Lopez (alb3rtop)
on 2010-01-01 01:28
Vale, se me ha ocurrido hacer lo siguiente ( a ver que os parece):

hacer una migracion a la tabla de usuarios con una columna nueva llamada
"Rol", en la cual, rol es un string.

En el modelo Usuario.rb tecleo:

ROL = [
 ["Administrador", "admin"]
 ["Usuario", "usuario"]
 ]
(esto es para los formularios, la verdad es que no es muy importante
para la solucion).

Bueno, al caso, que una vez el usuario tiene otro campo, llamado Rol (
@usuario.rol ). Lo unico que tendria que hacer es una condicion em la
que compruebo si usuario.rol es administrador o usuario.

Lo que no me da salido es esa comprobacion, y he probado mil cosas:

A ver si alguien me termina de echar el guante (con decirme que necesito
de condicion en el if me llega).

Y también espero sugerencias sobre mi modo de hacer el rol :D apenas
estoy empezando con RoR
Posted by Juan Ripoll (juarinu)
on 2010-01-23 10:35
Alberto Lopez wrote:
> Vale, se me ha ocurrido hacer lo siguiente ( a ver que os parece):
> 
> hacer una migracion a la tabla de usuarios con una columna nueva llamada
> "Rol", en la cual, rol es un string.
> 
> En el modelo Usuario.rb tecleo:
> 
> ROL = [
>  ["Administrador", "admin"]
>  ["Usuario", "usuario"]
>  ]
> (esto es para los formularios, la verdad es que no es muy importante
> para la solucion).
> 
> Bueno, al caso, que una vez el usuario tiene otro campo, llamado Rol (
> @usuario.rol ). Lo unico que tendria que hacer es una condicion em la
> que compruebo si usuario.rol es administrador o usuario.
> 
> Lo que no me da salido es esa comprobacion, y he probado mil cosas:
> 
> A ver si alguien me termina de echar el guante (con decirme que necesito
> de condicion en el if me llega).
> 
> Y también espero sugerencias sobre mi modo de hacer el rol :D apenas
> estoy empezando con RoR

No entiendo eso que incluyes en el modelo Usuario…
La condicion que buscas la tienes que incluir en la vista
<% if current_user.rol="admin" %>
….
<% end %>

De todas maneras mírate las gemas de "restful-authentication" y 
"authlogic" que creo que son lo que estás buscando.
También puedes ver este screencast de <a 
href="http://railscasts.com/episodes/160-authlogic">authlogic</a>.

Un Saludo...
Posted by Alberto Lopez (alb3rtop)
on 2010-01-24 04:52
Juan Ripoll wrote:
> Alberto Lopez wrote:
>> Vale, se me ha ocurrido hacer lo siguiente ( a ver que os parece):
>> 
>> hacer una migracion a la tabla de usuarios con una columna nueva llamada
>> "Rol", en la cual, rol es un string.
>> 
>> En el modelo Usuario.rb tecleo:
>> 
>> ROL = [
>>  ["Administrador", "admin"]
>>  ["Usuario", "usuario"]
>>  ]
>> (esto es para los formularios, la verdad es que no es muy importante
>> para la solucion).
>> 
>> Bueno, al caso, que una vez el usuario tiene otro campo, llamado Rol (
>> @usuario.rol ). Lo unico que tendria que hacer es una condicion em la
>> que compruebo si usuario.rol es administrador o usuario.
>> 
>> Lo que no me da salido es esa comprobacion, y he probado mil cosas:
>> 
>> A ver si alguien me termina de echar el guante (con decirme que necesito
>> de condicion en el if me llega).
>> 
>> Y también espero sugerencias sobre mi modo de hacer el rol :D apenas
>> estoy empezando con RoR
> 
> No entiendo eso que incluyes en el modelo Usuario…
> La condicion que buscas la tienes que incluir en la vista
> <% if current_user.rol="admin" %>
> ….
> <% end %>
> 
> De todas maneras mírate las gemas de "restful-authentication" y 
> "authlogic" que creo que son lo que estás buscando.
> También puedes ver este screencast de <a 
> href="http://railscasts.com/episodes/160-authlogic">authlogic</a>.
> 
> Un Saludo...


Hola, simplemente he añadido un parámetro nuevo a la tabla de usuarios: 
"rol". Pero como quiero que rol sea o bien Admin o Usuario, para ello 
tengo que poner en el modelo.
 ROL = [
 ["Administrador", "admin"]
 ["Usuario", "usuario"]
 ]

El problema de los plugins es que no me gusta usarlos, mas que nada 
porque prefiero hacerlo yo y saber como funciona todo lo que tengo. Al 
empezar con Rails me habia hecho una especie de blogs con tooodo plugins 
y al final no tenía ni idea de lo que estaba haciendo ni nada xD. Pero 
gracias por el consejo :).

PD: A mi esta solución me ha servido para salir del paso.
Posted by Alberto Lopez (alb3rtop)
on 2010-01-24 06:28
Ah, y lo de la condicion, no me acordaba que lo había preguntado jeje. 
Al final lo hice con:

session[:usuario_rol] = usuario.rol #esto es al crear la sesión, para 
almacenar el rol.

y luego, la condicion:

if Usuario.find_by_id(session[:usuario_rol]) == "admin"

y listo.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.