我正在尝试在我的应用上设置角色。
我有称为用户,个人资料,组织和角色的模型。协会是:
用户
class User < ActiveRecord::Base
rolify strict: true
attr_accessor :current_role
资料
belongs_to :user
belongs_to :organisation
组织
belongs_to :owner, class_name: 'User'
has_many :profiles
resourcify
角色
class Role < ActiveRecord::Base
scopify
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
我使用Pundit进行授权,并且我有一个角色控制器,其中定义了CRUD操作。
我的流程是每个组织属于一个用户(“所有者”)。该用户可以将角色分配给属于同一组织的配置文件。以这种方式分配的每个角色都将限定为用户拥有的组织。
在我的角色创建操作中,是否有办法强制将角色范围限制在将角色分配给配置文件的用户(所有者)的组织中。
我在角色控制器中的创建操作有:
def create
@role = Role.new(role_params)
respond_to do |format|
if @role.save
format.html { redirect_to @role }
format.json { render :show, status: :created, location: @role }
else
format.html { render :new }
format.json { render json: @role.errors, status: :unprocessable_entity }
end
end
end
我想知道我是否可以在角色控制器中调用一个新动作:assign_scoped_role
我可以从rolify文档中看到,这是分配作用于类的角色的方法:
user.add_role :moderator, Forum.first
我不确定我是否应该在角色控制器,组织控制器或配置文件控制器中尝试这样做。
有人能看到怎么做吗?