在我的 Rails 应用程序中,我有三种可能的用户权限,它们是 User.is_admin
、User.is_school
和 User.is_security
。根据我的应用程序的性质,我需要为每个做完全不同的事情的用户提供一个单独的主屏幕,我正在努力。我遇到的问题与设计如何在所有用户登录后自动重定向到 root_path 有关,无论我设置的权限如何。
我在 Users 命名空间中生成了 Devise Sessions Controller ,并将其覆盖为我的 Controller 的默认值,但是现在当我尝试进行重定向时,基于条件权限,我得到了一个 DoubleRenderError
(明显的原因是 Devise 在创建 session 时重定向到其他地方)。
我已尝试将其作为 after_action 运行,甚至尝试覆盖 after_sign_in_path_for
方法,按照有关该问题的 Devise 文档的指导,但我仍然无法使其正常工作。任何帮助将不胜感激,谢谢!
最佳答案
你可以这样做
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
关于ruby-on-rails - 根据登录时的用户角色设计重定向到特定页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32020473/