Ruby on rails Rails:如何动态创建角色以进行角色化

Ruby on rails Rails:如何动态创建角色以进行角色化,ruby-on-rails,rolify,Ruby On Rails,Rolify,我跟随rolify的教程学习了一些基本用法 目前,我唯一可以创建角色的方法是在控制台中添加类似于user.add\u角色“admin”。 我想要的是通过添加资源的操作来创建角色,然后管理员用户可以将角色分配给用户。 我不知道如何做到这一点,我起草了一份草案来表明我的目的。 有人能给我一些想法吗 创建一个模型: class Role < ActiveRecord::Base has_and_belongs_to_many :users, :join_table => :users_

我跟随rolify的教程学习了一些基本用法

目前,我唯一可以创建角色的方法是在控制台中添加类似于
user.add\u角色“admin”
。 我想要的是通过添加资源的操作来创建角色,然后管理员用户可以将角色分配给用户。 我不知道如何做到这一点,我起草了一份草案来表明我的目的。 有人能给我一些想法吗

创建一个模型:

class Role < ActiveRecord::Base
  has_and_belongs_to_many :users, :join_table => :users_roles
  belongs_to :resource, :polymorphic => true

  validates :resource_type,
            :inclusion => { :in => Rolify.resource_types },
            :allow_nil => true 
  scopify
end
类角色:users_角色
属于:资源,:多态=>true
验证:资源类型,
:inclusion=>{:in=>Rolify.resource_types},
:allow_nil=>true
嘲笑
结束
以常规形式使用该模型。这样,您就可以创建新角色


如果您想通过用户模型添加角色,例如从下拉列表选择,抓取roles.all并将其传递给您的select。

为什么资源类型允许nil?如果您的角色未链接到资源,那么它应该无效。(?)该模型代码实际上是rolify gem中的代码,因此rolify内部可能需要
allow\u nil
。实际上,您甚至无法定义此模型。但您应该这样做只是为了更好地控制它,知道“它就在那里”,以及以后可能需要在角色上实现的逻辑,这样您就知道在哪里添加它了