![](/img/trans.png)
[英]Access request.format from Rails ApplicationController
[英]Access method from ApplicationController
我正在嘗試使用要求我訪問通過控制器擴展名登錄的當前用戶的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上失敗,帶有“未定義的局部變量或ApplicationController:Class的方法“ current_user””。
有什么方法可以通過控制器擴展來訪問current_user方法?
謝謝你的幫助!
這里的問題是范圍:如果您將當前用戶定義為實例方法,則它將對控制器的所有實例(在每個url請求上創建)都可用,但是您嘗試將其用作類方法。
因此,將其定義為類方法:
def self.current_user
...
end
但是沒有請求就沒有意義,而且意義更小,因為類將在生產中兌現,並且set_current_tenant_to在服務器啟動時僅被調用一次。
PS對您的屍體投遞表示抱歉,我剛剛看到這里沒有答案
您的助手位於私有部分-您希望在私有塊之外
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.