2016-06-09 71 views
0

我已經生成了額外的設計控制器,我想修改註冊控制器,只允許​​訪問該控制器上的新建,創建和刪除選項。我實現了一個方法super_user?,它根據用戶的super_user狀態返回一個布爾值。問題定製設計控制器:require_no_authentication

def super_user? 
    if user_signed_in? 
     current_user.super_user == true ? true : false 
    else 
     false 
    end 
    end 

然後在控制器I重​​定向並且如果super_user方法返回false呈現閃光消息。當沒有用戶登錄或沒有超級用戶能力的signed_in用戶嘗試訪問sign_up頁面時,他們按計劃重定向。

def new 
    if super_user? 
     super 
    else 
     redirect_to root_url 
     flash[:warning]= "Only Administrators can add accounts" 
    end 
    end 

然而,當與SUPER_USER能力的一個用戶登錄他們將被重定向到首頁,這消息被記錄到控制檯:

Filter chain halted as :require_no_authentication rendered or redirected

從我的理解,同時研究這個話題,這方法是Devise的一部分,用於重定向已經從sign_up和sign_in頁面登錄的用戶,因爲他們實際上已經是用戶。但在我的情況下,我希望超級用戶登錄後能夠訪問sign_up頁面來爲其他用戶進行登錄。有誰知道我如何解決這個問題?

回答

0

所以我真的知道發生了什麼,我想回答以防其他人遇到這個問題。

如果您只需將skip_before_filter :require_no_authentication添加到RegistrationsController,那麼每件事情都按預期運行。我找到了答案here