Ruby on rails 使用Rolify仅基于实例创建角色

Ruby on rails 使用Rolify仅基于实例创建角色,ruby-on-rails,rolify,Ruby On Rails,Rolify,是否有一个创建角色的选项,我们只能将其分配给实例,而不能分配给整个类?我想定义一个作用域为资源实例的角色: user = User.find(2) user.add_role :moderator, Forum.first 但我希望避免定义作用域为整个类的角色: user = User.find(3) user.add_role :moderator, Forum 有什么办法禁止第二种选择吗?我不知道Rolify为此提供了什么,但您可以始终使用普通的好ruby: User.prepend(M

是否有一个创建角色的选项,我们只能将其分配给实例,而不能分配给整个类?我想定义一个作用域为资源实例的角色:

user = User.find(2)
user.add_role :moderator, Forum.first
但我希望避免定义作用域为整个类的角色:

user = User.find(3)
user.add_role :moderator, Forum

有什么办法禁止第二种选择吗?

我不知道
Rolify
为此提供了什么,但您可以始终使用普通的好ruby:

User.prepend(Module.new do
  def add_role(role, target)
    raise "Not allowed" if target.is_a?(Class)
    super(role, target)
  end
end)

我不知道
Rolify
为此提供了什么,但您可以始终使用普通的好ruby:

User.prepend(Module.new do
  def add_role(role, target)
    raise "Not allowed" if target.is_a?(Class)
    super(role, target)
  end
end)

工作起来很有魅力。我在lib目录中创建了模块。用户类在该模块前面加上前缀。角色及其限制是在配置文件中定义的。工作起来就像一个符咒。我在lib目录中创建了模块。用户类在该模块前面加上前缀。角色及其限制在配置文件中定义。