使用 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)