使用 Rolify 仅基于实例创建角色
Create role based only on instance with Rolify
是否可以选择创建只能分配给实例但不能分配给整个 class 的角色?我想定义一个作用域为资源实例的角色:
user = User.find(2)
user.add_role :moderator, Forum.first
但我想避免定义作用域为整个的角色 class:
user = User.find(3)
user.add_role :moderator, Forum
有没有办法禁止第二个选择?
我不知道 Rolify
提供了什么,但你总是可以使用普通的旧好 ruby Module#prepend
为此:
User.prepend(Module.new do
def add_role(role, target)
raise "Not allowed" if target.is_a?(Class)
super(role, target)
end
end)
是否可以选择创建只能分配给实例但不能分配给整个 class 的角色?我想定义一个作用域为资源实例的角色:
user = User.find(2)
user.add_role :moderator, Forum.first
但我想避免定义作用域为整个的角色 class:
user = User.find(3)
user.add_role :moderator, Forum
有没有办法禁止第二个选择?
我不知道 Rolify
提供了什么,但你总是可以使用普通的旧好 ruby Module#prepend
为此:
User.prepend(Module.new do
def add_role(role, target)
raise "Not allowed" if target.is_a?(Class)
super(role, target)
end
end)