Rails - Role_Model,删除分配给用户的角色

Posted

技术标签:

【中文标题】Rails - Role_Model,删除分配给用户的角色【英文标题】:Rails - Role_Model, removing a role assigned to a user 【发布时间】:2015-12-17 16:02:59 【问题描述】:

我有用于角色分配的带有角色模型的 Rails 4。

我不知道如何删除分配给用户的角色。

我的 profile.rb 中有两个角色,:manager 和 :student。

我有一个用户被分配了两个角色。我想从该用户的角色分配中删除经理。

尝试 p.roles > :manager 尝试删除它,但没有成功。

如何删除用户的角色?

另外,在我看来,当我这样做时:

 if(current_user.has_role? :student)

我收到此错误:

undefined method `has_role?' for #<User:0x007fb3b39dacb0>

我不知道或不明白这条消息的含义。

任何帮助将不胜感激。谢谢

【问题讨论】:

【参考方案1】:

您可以使用 remove_role 方法从用户中删除角色。假设您想从 ID = 1 的用户中删除 :manager 角色:

user = User.find(1)
user.remove_role :manager

对于第二个问题,您分配角色的模型是什么?个人资料或用户?您只能将 Rolify 方法直接调用到您指定“Rolify”的模型,如下所示:

class User < ActiveRecord::Base
  rolify
end

或者,如果您使用的是 role_model gem:

user.valid_roles.delete(:manager)

【讨论】:

嗨 Raphael,我没有使用 rolify。我使用 role_model gem 可能只是从角色数组中移除的问题,像这样:user.valid_roles.delete(:manager)

以上是关于Rails - Role_Model,删除分配给用户的角色的主要内容,如果未能解决你的问题,请参考以下文章

如何处理Rails加入表关系删除?

C语言如何给用函数二维数组动态赋值

Rails 4+ 最佳实践:删除父项同时保留子项

Rails 4 的 Rails_admin 批量分配错误

如何在 Rails 中创建类别

导轨 4 |使用位掩码在表单中为用户分配角色 |榜样