为多个Devise用户设置根路径

时间:2019-11-19 13:12:50

标签: ruby-on-rails authentication devise

我正在尝试创建一个简单的Rails应用程序,用户可以在其中以招聘人员,求职者或管理员的身份登录(我将保留admin的实现方式供以后使用)。未经身份验证的用户的根目录应该是主页,但是一旦用户登录,该根目录便被设置为其各自的仪表板。

我为每个用户创建了一个模型,并生成了单独的视图文件,控制器等(用于不同的范围)。

我遇到的问题是,当我以招聘者身份注册/登录时,如果我将devise_for :recruiters配置放在{{1}之前,则会重定向到正确的根路径。 }配置。

但是,在这种情况下,当我尝试以申请人身份注册/登录时,我会被重定向到默认根目录即主页。相反,当我将devise_for :applicants放在devise_for :applicants配置之前。

此外,如果我删除默认的根目录devise_for :recruiters,并尝试以root to: "pages#home", as: "guest_root"配置不是在route.rb文件中位于第一位的用户身份注册/登录,我将获得默认值Rails的“欢迎”页面。

我的路线文件当前如下所示:

devise_for

我已经尝试过将Rails.application.routes.draw do devise_scope :applicant do devise_for :applicants, path: "applicants", controllers: { sessions: "applicants/sessions", registrations: "applicants/registrations", }, path_names: { sign_in: "login", sign_out: "logout", sign_up: "register", } authenticated do root to: "dashboards#applicant_dashboard", as: "authenticated_applicant_root" end end devise_scope :recruiter do devise_for :recruiters, path: "recruiters", controllers: { sessions: "recruiters/sessions", registrations: "recruiters/registrations", }, path_names: { sign_in: "login", sign_out: "logout", sign_up: "register", } authenticated do root to: "dashboards#recruiter_dashboard", as: "authenticated_recruiter_root" end end get "about", to: "pages#about" get "contact", to: "pages#contact" root to: "pages#home", as: "guest_root" end 块移到devise_for之外,但是没有任何区别。我看到了一些示例,在登录后指定路径的方式如下:

devise_scope

但是我想我只需要以一种能使Devise正常工作的方式来编写路由文件,而不管我写入配置块的顺序如何。

有人可以建议我可能会出问题的地方,还是可以向我指出一些实现了类似内容的示例/资源?我已经特别搜索了网络和设计wiki,但没有结果。

0 个答案:

没有答案