如何创建具有3个不同角色的用户和一个用于注册/登录的位置?

时间:2017-05-30 17:36:00

标签: ruby-on-rails devise

该应用程序由3种类型的用户组成。管理员,客户和专业人士。

客户:使用基本信息(名称,用户名,图片,密码等)注册

专业人士:注册以上基本信息以及更多内容(职业,经验,教育等等)

管理员:控制整个应用及其用户。

我通过Devise创建了用户模型。现在我需要创建这些角色和一个登录位置(如果可能的话)。

许多文章建议不要创建3个模型,因为它会很乱。我如何实现这样的解决方案?

提前致谢。

2 个答案:

答案 0 :(得分:1)

对于所有这些用户类型,您必须只使用一个模型(用户),在该模型中,您可以创建一个属性(例如role),以确定每个用户的角色(例如' admin&# 39;,' pro',' simple')然后,基于role,您可以使用gem进行授权来决定每种类型的用户可以执行的操作({{ 3}},cancancan)。 因此,您的所有用户都将以相同的方式注册和登录,但所有用户都将享有不同的权利。

如果您想为此用户类型保留不同的附加信息,您可以为其创建其他模型(个人资料,帐户等),并根据用户在注册步骤中选择的类型为用户提供填写。

答案 1 :(得分:0)

在这种情况下,最佳解决方案是使用polymorphic associations

让公共属性在您的user模型中,以及相应模型中的其他详细信息。

您可以创建一个2步注册页面,让用户首先输入常用详细信息,然后根据enumType e = new enumType(inputType.NAME); // You can also replace it with the value you want 的类型输入第二步详细信息。

登录可以是单一形式。

您可以在互联网上找到许多教程和示例。