2011-12-26 12 views
7

¿Hay alguna forma de acceder al usuario actual en routes.rb? Me gustaría tener un mapeo:Diseñar usuario_actual en routes.rb

match /profile => redirect("/profiles/{current_user.name}") 

env['warden'] no parece que se creará, así que no puedo acceder warden.user.name.

Respuesta

4

Para ampliar la respuesta de user1136228:

get '/profile', to: redirect { |params, request| 
    me = request.env["warden"].user(:user) 
    me ? ('/profiles/' + me.name) : '/' 
} 
7

No estoy seguro de que sea posible. Sin embargo, puede usar un controlador:

def profile 
    if signed_in? 
     redirect_to user_profile_path(current_user) 
    else 
     redirect_to root_url 
    end 
end 
+0

Gracias, he hecho esto y es una solución decente, pero se vuelve repetitivo cuando tiene varias URL convenientes relacionadas con el usuario actual (edit_profile_path, etc.). – mahemoff

+0

todo es siempre posible y alcanzable. – sidney

2

Las dos posibilidades. Si está utilizando diseñar puede utilizar alcaide de este modo:

current_user = request.env["warden"].user(:user) 

o sin guarda

User.find_by_id(request.session[:user_id]) 

si almacena tu ID de usuario en la sesión de: USER_ID

+0

No veo cómo funciona esto en routes.rb. – mahemoff

+2

Puede agregar constaraint en routes.rb – user1136228