设计routes.rb中的current_user

时间:2011-12-26 13:23:06

标签: ruby-on-rails ruby-on-rails-3 devise routes

有没有办法在routes.rb中访问当前用户?我想要这样的映射:

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

env['warden']似乎没有设置,因此我无法访问warden.user.name

3 个答案:

答案 0 :(得分:7)

不确定是否可行。但是,您可以使用控制器:

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

答案 1 :(得分:5)

扩展用户1136228的答案:

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

答案 2 :(得分:3)

有两种可能性。 如果你正在使用设计,你可以使用像这样的监护人:

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

或没有监狱长

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

如果您将用户的ID存储在会话'用户ID