问题描述
|
我在新项目中使用了Devise,但是在角色方面存在一些问题。
我的项目中有两种用户,但是这两种用户具有不同的数据结构(非常不同)。
我知道Devise支持角色,但是应该如何处理不同的用户数据结构?
谢谢。
解决方法
Devise文档指出,您可以根据需要使用不同的模型拥有尽可能多的角色(配置多个模型)
您只需像第一个模型一样设置其他模型,然后将其添加到
routes.rb
devise_for :admins
然后,您可以在控制器和视图内部使用:
# Inside your protected controller
before_filter :authenticate_admin!
# Inside your controllers and views
admin_signed_in?
current_admin
admin_session
主要问题是如何让这两个帐户访问同一控制器(如果适用于您的情况),因为这两个“ 3”,如果不是登录角色,第一个将始终重定向到登录页面(例如:admin)。您可能必须实现自定义的before_filter才能同时针对两个角色验证会话。
您可能可以通过为这些角色定制路线来解决此问题。例如/admin/projects
和/user/projects
。在这种情况下,authenticate
方法可能会有所帮助。