Rolify:用户可以将特定的资源角色分配给其他用户吗?

时间:2017-04-20 19:56:48

标签: ruby-on-rails ruby devise cancancan rolify

我正在尝试确定在使用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

非常感谢!

1 个答案:

答案 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命名空间中。