Разработайте current_user в rout.rb - PullRequest
7 голосов
/ 26 декабря 2011

Есть ли способ получить доступ к текущему пользователю в rout.rb?Мне бы хотелось, чтобы такое отображение было таким:

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

env['warden'], похоже, не настроено, поэтому я не могу получить доступ к warden.user.name.

Ответы [ 3 ]

7 голосов
/ 26 декабря 2011

Не уверен, что это возможно.Однако вы можете использовать контроллер:

def profile
    if signed_in?
        redirect_to user_profile_path(current_user)
    else
        redirect_to root_url
    end
end
5 голосов
/ 26 февраля 2016

Чтобы развернуть ответ пользователя 1136228:

get '/profile', to: redirect { |params, request|
  me = request.env["warden"].user(:user)
  me ? ('/profiles/' + me.name) : '/'
}
3 голосов
/ 25 декабря 2015

Есть две возможности. Если вы используете devise, вы можете использовать warden следующим образом:

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

или без надзирателя

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

если вы храните идентификатор пользователя в сеансе: user_id

...