Rails - 角色还是继承?

时间:2009-12-08 01:43:45

标签: ruby-on-rails inheritance authorization

我开始使用declarative_authorization(http://github.com/stffn/declarative_authorization)编写应用程序,但我现在想知道它是否是正确的方法。

在我的应用中,我给了一些用户“客户”角色,一些“管理员”角色,以及一些“超级拉丁”角色。这工作正常,但我现在意识到我需要一些特定于“客户”的模型上的字段

Superadmin =管理员编辑

Admin =客户编辑

Customer =有额外的属性,如“avatar”

此时我开始创建一个继承自User的Customer模型。但是,在这种情况下,客户将始终拥有“客户”角色,而客户将拥有该角色。这看起来有点奇怪。

我想我正在为这种情况寻找一些指导。

2 个答案:

答案 0 :(得分:0)

您能否进一步阐述管理员和用户角色之间的紧急差异?

根据您的更新进行编辑:我个人认为客户角色本身并不是必需的,除非有特权级别较低的经过身份验证的用户。我只需要一个登录用户来执行您不希望访客执行的任何操作,并且需要管理员/超级用户角色来执行您不希望常规用户执行的任何操作。我认为进入多个模型甚至是STI都是不必要的。

如果您的应用有特殊情况我错过了,请告诉我们! ;)

答案 1 :(得分:0)

我推出了自己的解决方案,我在http://colinramsay.co.uk/diary/2010/02/24/rails-has_one-am-i-missing-something/

中详细说明了这个问题