Rails具有多个角色的用户模型

时间:2014-03-04 21:00:51

标签: ruby-on-rails model

我是rails的新手,我想了解如何正确定义用户模型及其角色/类型。在我写的应用程序中,我有3种类型的用户:客户端,员工,具有以下功能限制的管理员

  • 所有3种用户类型都可以访问应用程序的不同功能
  • 员工也可以是客户。
  • 管理员也可以是员工,也可以是客户,或两者兼而有之。管理员可以是客户而不是员工
  • 员工,管理员可以访问该应用程序(用户名/密码)。客户可能会或可能不会访问该应用程序。

该应用程序还具有服务(服务的定义:名称,价格等)和ServiceInstance(销售服务)模型。

  • 将ServiceInstance“提供”给作为客户的用户(员工 和管理员也可以是客户)
  • ServiceInstance由“Staff”“执行”(Admin可以是Staff 也)。

非常感谢任何建议/反馈。

1 个答案:

答案 0 :(得分:1)

听起来像是员工,管理员和工作人员。客户端将是您的应用程序的关键概念。我会为每个创建一个模型,并与User建立一对一(has_one或belongs_to)关系。然后,您可以在用户上添加验证,以允许/禁止员工,管理员和组合的组合。客户端。

附加:这意味着用户仍然是代表可以登录系统的人的模型。如果该用户是客户和工作人员,则它将这两个模型关联起来。

ServiceInstance与客户端的关联称为“provided_by”。 ServiceInstance与员工有一个名为'executed_by'的关联。当然,客户端和员工实际上指的是用户,但是指定特定上下文/角色的用户。

如果您需要显示客户,员工或管理员列表,您只需查询该表,但打印相关的用户信息。如果您需要显示所有用户的列表,请查询用户表并显示图标或其他内容,无论他们是客户,员工,管理员还是他们的组合。

附加:因此,您对员工和客户的用户的评论将在员工和客户表中,因为该用户同时具有这两个角色。