2011-05-02 87 views

回答

5
before_filter {authenticate_user! || authenticate_admin!} 

將proc傳遞給before_filter方法將與您提供的問題最接近。

+0

authenticate_user! || authenticate_admin! 不起作用。資源不是用戶的那一刻它不會檢查authenticate_admin!並會提高未經授權的身份。 – 2015-01-01 10:26:52

-2

由於:authenticate_user!是一個符號,:foo == true是有效的。因此,你的榜樣將永遠只是等同於before_filter :authenticate_user!

試着這麼做(不知道你的設置在這裏的..):

if method_defined?(:authenticate_user!) 
    before_filter :authenticate_user! 
else 
    before_filter :authenticate_admin! 
end 

如果定義了兩種方法,並希望運行authenticate_user!那麼如果將返回假,運行authenticate_admin!,只是做一個authenticate!方法,檢查使用/管理和運行before_filter

+1

':foo == true'不正確(不是雙關)。用irb檢查一下。你可能想說「:foo是一個真正的價值」。 – whitequark 2012-01-19 11:10:38

6
before_filter :do_authentication 

def do_authentication 
    authenticate_user! || authenticate_admin! 
end