【发布时间】:2012-09-26 20:48:00
【问题描述】:
需要帮助! :)
用例: 管理员具有“超级管理员”角色时可以创建另一个管理员,管理员也可以创建“代理”
管理员模型的角色:
- 超级管理员
- 管理员
管理员可以创建两个角色都可以创建“代理”
代理可以创建“用户”,但不能创建“代理”,并且他不应该看到其他代理创建的用户。他只有一个角色——“代理人”
现在的问题是:如何在 Ability 中初始化“admin”、“agent”和“user”,因为它们是 3 个不同的模型?
class Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
can :read, Photo, Photo.unowned do |photo|
photo.groups.empty?
end
end
end
注意:用户在代理下,代理在管理员下。我需要它们是不同的模型
【问题讨论】:
-
也许您应该有一个通用模型“用户”并将角色与他们相关联?
-
@code-gijoe 感谢您的评论 - 如上所述,我需要将它们放在不同的表中。
-
您能解释一下为什么您需要将每个角色放在不同的表中吗?我认为这将有助于我们更好地回答您的问题。 @code-gijoe 在他的回答中对单表继承(或多态关联)的引用是最好的方法,它将允许您为每个角色拥有单独的模型类。但也许我们遗漏了有关您的用例和需求的一些细节?
标签: ruby-on-rails cancan