2
  • 管理员 = 完全控制。CRUD 教师和学生帐户。最小字段集。
  • 老师 = 阅读/更新他们自己的帐户。阅读他们自己的学生帐户。更多独特的领域。
  • 学生 = 阅读/更新他们自己的帐户。更多独特的领域。

身份验证 - 设计授权 - CanCan、Rolify

我在 Devise 中有一个用户模型,结合 CanCan 和 Rolify 来设置角色和能力。这工作正常,但由于下面的第一个要求而开始变得复杂。我不确定“角色”是区分这些帐户的最佳方式,因为它们具有非常不同的字段集和能力。

为三种用户类型使用不同的设计模型会更好吗?(这因第二个要求而变得复杂。)或者像我现在所做的那样将所有用户保持在一个模型中并分配角色和能力是最佳实践吗?

要求:

  • 不同的用户类型将具有该用户类型独有的几个(必需)字段(即学生有 parent_name,教师没有等)
  • 我需要有一个统一的登录表单,并从登录凭据中检测到用户类型,并基于此重定向用户。

我在这里查看了几个关于实现这两种方法的细节的答案,但我正在寻找关于哪种方法更适合我的应用程序的建议。我在设计中投入太多了吗?我意识到它只是一个身份验证框架。我应该为个人属性设置一个单独的用户模型吗?

好像你不知道 - 我对此很陌生,但仍在尝试了解这些概念。

4

1 回答 1

0

一个建议是使用 Devise 使事情尽可能简单,并通过 User 模型中的单个字符串字段来管理角色。然后您只有一个字段来检查身份验证,并且您可以为教师和学生所需的其他属性制作另外 2 个单独的模型,因为使用 Rails 的帮助程序(belongs_to 等)可以轻松访问它们。

于 2013-07-20T22:49:16.120 回答