Devise是否支持不同角色的不同模型? (在铁轨中)

时间:2011-05-24 09:36:16

标签: ruby-on-rails ruby-on-rails-3

我在新项目中使用Devise,但我在角色方面遇到了一些问题。

我的项目中有两种用户,但这两种用户具有不同的数据结构(非常不同)。

我知道Devise支持角色,但我应该如何处理不同的用户数据结构?

谢谢。

1 个答案:

答案 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方法可能会有所帮助。