2015-08-15 94 views
2

用户角色特定的网页我有一个用户三种可能的权限是在我的Rails应用程序,它们是User.is_adminUser.is_schoolUser.is_security。基于我的应用程序的性质,我需要为每个用户做一个单独的主屏幕,这些用户可以完成截然不同的事情,这是我工作的。无论我设置的权限如何,设置后,我所遇到的问题都与设备自动重定向到root_path后所有用户的身份有关。设计重定向到基于登录

我生成了Devise Sessions控制器到用户名称空间中,并且我已经将其覆盖默认给我的控制器,但现在当我尝试根据条件权限执行重定向时,我得到一个DoubleRenderError(显而易见的原因是Devise在创建会话时将重定向到其他地方)。

我试过将它作为after_action运行,甚至尝试覆盖after_sign_in_path_for方法,按照关于此问题Devise文档的方向,但我仍然无法正常工作。任何帮助将不胜感激,谢谢!

+3

“我已经尝试运行它作为一个after_action,甚至试图覆盖after_sign_in_path_for方法,按的方向在此问题上设计文档,但我仍然无法实现。“你需要发布你的代码,因为这是如何从Devise获得你想要的。请记住,我们没有魔力。如果你希望得到帮助,你需要告诉我们你的尝试。 – MarsAtomic

+0

你是否因为添加了重定向而得到DoubleRenderError,而'after_sign_in_path_for(resource)'也会重定向?亚,可能是时间开始张贴一些代码 – daslicious

回答

4

你可以做这样的事情

class ApplicationController < ActionController::Base 
    def after_sign_in_path_for(resource) 
    if resource.role == 'admin' 
     admin_root_path 
    else 
     user_root_path 
    end 
    end 
end 

你可以阅读更多有关此https://github.com/plataformatec/devise/wiki/How-To:-redirect-to-a-specific-page-on-successful-sign-in

+0

这很好,谢谢 – ZubatMan

+1

我很高兴我能够帮助 – MZaragoza

+1

不应该这样,如果resource.role =='管理'? – rylanb