助けが必要!:)
ユースケース: 管理者は「スーパー管理者」の役割を持っている場合に別の管理者を作成でき、管理者は「エージェント」も作成できます
管理者モデルの役割:
- スーパー管理者
- 管理者
管理者は両方の役割を作成でき、「エージェント」を作成できます
エージェントは「ユーザー」を作成できますが、「エージェント」を作成することはできず、他のエージェントによって作成されたユーザーは表示されません。彼の役割は「エージェント」の 1 つだけです。
問題は次のとおりです。アビリティで「管理者」、「エージェント」、および「ユーザー」を初期化する方法は、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
注: ユーザーは Agent の下にあり、Agent は Admin の下にあります。異なるモデルにする必要があります。