通过单一登录在Rails应用程序中创建多个用户角色(Rails Devise,Pundit,STI?HELP)

时间:2018-01-16 19:31:56

标签: ruby-on-rails pundit

我目前是Rails noob,我一直在努力为这个特定的Rails应用程序绘制数据模型。我正在尝试构建一个业务员工/客户应用程序,其中有三种类型的用户(管理员,员工和客户)。

管理员可以完全控制他/她可以添加/编辑新员工和客户(他们将为他们创建用户帐户)。员工将能够查看自己的帐户详细信息,并且客户也一样。

如何使用Rails设计和专家来设置它?我潜伏在谷歌和stackoverflow,最常见的解决方案似乎围绕着拥有一个用户模型并使用STI / pundit为用户设置角色并限制对特定视图的访问。在我发疯之前,有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

通常情况下,如果角色是独占的(意味着员工不能是管理员或客户,客户不能是管理员/员工等),那么您需要在{role:integer列上添加User列。 1}}模型是Rails枚举:

enum role: %i[customer employee admin]

通过您自己的自定义代码或类似pundit的内容,您可以获得不同授权(用户可以访问的内容)所需的内容。

如果您的用例需要角色来拥有不同的数据,您可以使用Users表执行单表继承,但强烈建议您避免使用STI。

如果您的用户需要多个角色,并且每个角色需要不同的数据/行为,您可以考虑使用多态关联。我之前写过here的答案。