2011-12-26 66 views
7

有什麼方法可以訪問routes.rb中的當前用戶嗎?我想這樣的映射:在routes.rb中設計current_user

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

env['warden']似乎並不成立,所以無法訪問warden.user.name

回答

4

要擴大user1136228的回答:

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

不知道這是可能的。但是,您可以使用控制器:

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

謝謝,我已經這樣做了,這是一個體面的解決方法,但獲得重複當您有多個與當前用戶相關的便捷網址(edit_profile_path等)時。 – mahemoff 2011-12-26 15:15:19

+0

一切都是可能的和可實現的。 – sidney 2016-07-10 12:41:49

2

這是兩種可能性。 如果您使用的設計,你可以使用監獄長像這樣:如果你存儲用戶的ID在會話的

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

或不監獄長

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

:user_id說明

+0

我不明白這是如何工作在routes.rb。 – mahemoff 2016-01-11 19:02:24

+2

您可以在routes.rb中添加constaraint – user1136228 2016-02-08 08:21:51