我想找到登录的current_user。 我在应用程序控制器中使用此方法:
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
我可以在我的控制器中从show方法访问current_user,但在任何其他方法中它都是nil。 这很奇怪,因为它之前正在工作,现在我不知道我做了什么,但它不再起作用了。 任何人都可以帮助我吗?
答案 0 :(得分: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