2016-06-09 75 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