我想找到登录的current_user。我在应用程序控制器中使用此方法:
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
我可以访问current_user从显示方法在我的控制器,但在任何其他方法它是nil。这很奇怪,因为它之前是工作的,现在我不知道我做了什么,但它不再工作了。谁能帮我一下?
鉴于您最后的评论,您的问题仅与会话有关。它没有链接到您的current_user
方法的定义。
默认情况下,当HTTP POST请求中没有身份验证令牌时,Rails 3应用程序会重置会话。该行为与Rails 4略有不同(取决于配置),但您最终会遇到类似的问题。
我猜你的ajax查询不包含身份验证令牌,因此警告WARNING: Can't verify CSRF token authenticity
,因此空会话。在一个空的会话中,你的current_user
方法将始终返回nil
,除非你在一个GET请求中,并且自认证以来你没有做任何POST请求。
我没有在这里写一个解决方案,因为它不简单(它取决于你使用的javascript框架),它与你原来的问题没有链接。
您应该阅读这个问题的答案:警告:Can't verify CSRF令牌真实性rails