首页 > 解决方案 > Rails Devise:验证两个模型

问题描述

我正在构建具有三种设计模型的 Rails 应用程序:管理员、教师、学生。我想创建一个管理员和教师可以访问的页面。

我知道如何创建一个角色的用户可以访问的页面。像

before_action :authenticate_model!

但是,当我想检查管理员或教师的身份验证时,我该怎么做。

自动重定向路径可以固定一个。例如,如果用户在未登录的情况下访问该页面,则该用户将被重定向到教师的登录页面,其中包含指向管理员的超链接。

有任何想法吗?

标签: ruby-on-railsrubydevise

解决方案


我认为您可以使用devise_group选项。

例子:

inside BlogsController (or any other controller, it doesn't matter which):
  devise_group :blogger, contains: [:user, :admin]

Generated methods:
  authenticate_blogger!  # Redirects unless user or admin are signed in
  blogger_signed_in?     # Checks whether there is either a user or an admin signed in
  current_blogger        # Currently signed in user or admin
  current_bloggers       # Currently signed in user and admin

Use:
  before_action :authenticate_blogger!              # Redirects unless either a user or an admin are authenticated
  before_action ->{ authenticate_blogger! :admin }  # Redirects to the admin login page
  current_blogger :user                             # Preferably returns a User if one is signed in

推荐阅读