我正在尝试使用一个gem,要求我访问通过控制器扩展登录的当前用户。这是我的ApplicationController与我认为应该工作:
class ApplicationController < ActionController::Base
helper :all
protect_from_forgery
set_current_tenant_to(current_user.member)
private
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
helper_method :current_user
def require_user
unless current_user
flash[:notice] = "You must be logged in to access this page"
redirect_to '/login'
return false
end
end
end
这对set_current_tenant_to失败,“undefined局部变量或方法`current_user'用于ApplicationController:Class”。
有没有办法通过控制器扩展访问current_user方法?
感谢您的帮助!
答案 0 :(得分:3)
这里的问题在于范围:如果您将当前用户定义为实例方法,它将可用于控制器的所有实例(在每个URL请求上创建),但您尝试使用它作为一种班级方法。
所以将它定义为类方法:
def self.current_user
...
end
但没有请求就没有意义,因为类会在生产中兑现,而set_current_tenant_to只会在服务器启动时被调用一次。
PS抱歉为尸检,我刚才看到这里没有答案
答案 1 :(得分:1)
你的帮助者在私人部分 - 你想要在私人区域之外