在Rails中将用户角色存储在数据库中的位置?使用CanCan,Devise和Role_Model

时间:2012-05-11 18:34:20

标签: ruby-on-rails ruby devise roles cancan

我有一个使用Devise设置身份验证的rails应用程序。我正在添加CanCan和Role_Model。添加能力似乎很容易。但是我不确定在哪里存储用户的角色。我应该:

  1. 在用户数据库表中为角色添加一列?

  2. 为role和role_user添加单独的一个或多个表?

  3. 在其他地方添加角色?

1 个答案:

答案 0 :(得分:2)

这取决于如何在您的应用程序中实现角色。

  1. 如果角色将被继承,例如admin< registered user< guest,意味着管理员可以执行reg. userguest能够执行的所有操作(等等),然后您可能只想在一个role字段上添加一个user_id, role_id字段普通用户模型。

  2. 如果您的应用中的“操作”绑定到不继承权限的特殊角色(与上述不同),即您需要在管理员身上拥有多个角色才能与应用程序进行一些常见的交互(如访客)确实如此),那么你需要一个连接表,填充{{1}}对。

  3. 我个人更喜欢第一种选择。