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

时间:2015-09-21 03:42:24

标签: ruby-on-rails user-roles

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

我无法弄清楚如何删除分配给用户的角色。

我在我的个人资料中有两个角色.rb,:manager和:student。

我有一个已分配两个角色的用户。我想从该用户的角色分配中删除管理员。

尝试p.roles<< :学生,添加一个角色,所以我尝试了p.roles>> :经理尝试删除它,但它没有用。

如何从用户中删除角色?

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

 if(current_user.has_role? :student)

我收到此错误:

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

我不知道或不了解此消息的含义。

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

1 个答案:

答案 0 :(得分:0)

您可以使用方法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)