我正在尝试确定在使用Rolify(使用Devise和CanCanCan)时是否可以实现此流程...如果是这样,它将如何实现:
我有一个班级Shop
,属于User
。我希望创建相应Shop
实例的用户能够将Rolify角色(:manager
)分配给任何用户(NB任何创建实例的用户都应该能够分配角色 - 不仅仅是具有:admin
}角色的用户。
我知道这可以通过导轨控制台通过add_role
命令实现(例如,使用带有Shop
的{{1}}实例):
id: 5
但是我不清楚这是否可以由个人用户以编程方式完成 - 用户可以将角色分配给另一个用户。具体来说,从可搜索的下拉表单中选择用户并在提交时分配角色。
虽然我还没有任何值得展示/有助于展示的代码,但我希望在此处获得如何最好地解决此问题的方向(例如,应该在user.add_role :manage, Shop.find(5)
中定义行动或者在自己的控制器中?)。另外,最好使用Rolify完全废弃这个并为shops_managers创建一个连接表吗?
如果有帮助,这是shops_controller.rb
类:
Ability.rb
非常感谢!
答案 0 :(得分:0)
您不需要联系表来存储商店管理员。你有一个榜样:
Role(id: integer, name: string, resource_id: integer, resource_type: string, created_at: datetime, updated_at: datetime)
在商店中添加角色是完全没错的#create做类似的事情:
if @shop.save
#some code
@current_user.add_role :manager, @shop
#some more code
end
如果你想管理角色,应该在其他控制器中完成..可能在admins命名空间中。