该应用程序由3种类型的用户组成。管理员,客户和专业人士。
客户:使用基本信息(名称,用户名,图片,密码等)注册
专业人士:注册以上基本信息以及更多内容(职业,经验,教育等等)
管理员:控制整个应用及其用户。
我通过Devise创建了用户模型。现在我需要创建这些角色和一个登录位置(如果可能的话)。
许多文章建议不要创建3个模型,因为它会很乱。我如何实现这样的解决方案?
提前致谢。
答案 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
的类型输入第二步详细信息。
登录可以是单一形式。
您可以在互联网上找到许多教程和示例。