2011-08-25 20 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