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,删除分配给用户的角色的主要内容,如果未能解决你的问题,请参考以下文章