2011-08-25 39 views
-1

我想找到誰是登錄的CURRENT_USER 我正在使用的應用程序控制器,這種方法:問題找到當前用戶軌

def current_user 
    @current_user ||= User.find(session[:user_id]) if session[:user_id] 
end 

我可以訪問展方法CURRENT_USER在我的控制器,但在任何其他方法是零。 這很奇怪,因爲它在工作之前,現在我不知道我做了什麼,但它不再工作。 任何人都可以幫助我嗎?

+0

你也有'是helper_method:current_user'在應用程序控制器? – DGM

+0

是的,我有一個helper_method – kbaccouche

+0

嘗試找出,如果它是零,因爲會話[:user_id]是零或因爲其他,特殊情況下。 –

回答

0

鑑於您最近的評論,您的問題僅與會話有關。它沒有鏈接到你的定義current_user方法。

默認情況下,當HTTP POST請求中沒有身份驗證令牌時,Rails 3應用程序會重置會話。這個行爲與Rails 4稍有不同(取決於配置),但最後你會遇到類似的問題。

我猜你的ajax查詢不包含身份驗證令牌,因此警告WARNING: Can't verify CSRF token authenticity,因此是空的會話。對於空的會話,current_user方法將始終返回nil,除非您處於GET請求中,並且自驗證以來未發出任何POST請求。

我不寫這裏的解決方案,因爲它不是簡單的(它取決於你使用的JavaScript框架),它沒有鏈接到你原來的問題。

你應該閱讀這問題的答案:WARNING: Can't verify CSRF token authenticity rails