ruby-on-rails - Rails Devise:验证两个模型
问题描述
我正在构建具有三种设计模型的 Rails 应用程序:管理员、教师、学生。我想创建一个管理员和教师可以访问的页面。
我知道如何创建一个角色的用户可以访问的页面。像
before_action :authenticate_model!
但是,当我想检查管理员或教师的身份验证时,我该怎么做。
自动重定向路径可以固定一个。例如,如果用户在未登录的情况下访问该页面,则该用户将被重定向到教师的登录页面,其中包含指向管理员的超链接。
有任何想法吗?
解决方案
我认为您可以使用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
推荐阅读
- javascript - 设置选定的属性
- ios - 运行模拟器时看不到我的按钮 - Xcode10
- python - 如何使用文件字段更新嵌套序列化程序
- java - Powershell 脚本不在 Java 代码中运行
- javascript - 使用 Purechart 创建渐变
- c# - VS 扩展。尽管使用调试进行编译,为什么我得到“模块已优化”?
- android - 无法更新存储在 Myjson.com 中的 json
- ios - Swift - 如何将点击手势添加到 UIViews 数组?
- java - Java 为 Integer 参数调用 String.valueOf(char[] data) 而不是 String.valueOf(int i) 并抛出 ClassCastException
- python - wxPython:在面板上拖放 wx.Button 会使应用程序崩溃