我在新项目中使用Devise,但我在角色方面遇到了一些问题。
我的项目中有两种用户,但这两种用户具有不同的数据结构(非常不同)。
我知道Devise支持角色,但我应该如何处理不同的用户数据结构?
谢谢。
答案 0 :(得分:0)
设计文档说明您可以根据需要拥有尽可能多的具有不同模型的角色(configuring multiple models)
您只需像设置第一个模型一样设置其他模型,然后添加到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
主要问题是如何让这两个帐户访问同一个控制器(如果它适用于您的情况),因为两个before_filters
第一个总是会重定向到登录页面,如果不是登录角色(例如:admin)。您可能必须实现自定义before_filter以同时针对两个角色验证会话。
您可以使用这些角色的自定义路线解决此问题。 E.g /admin/projects
和/user/projects
。在这种情况下,authenticate
方法可能会有所帮助。