【问题标题】:Rails - Role_Model, removing a role assigned to a userRails - Role_Model,删除分配给用户的角色
【发布时间】: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>

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

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

【问题讨论】:

    标签: ruby-on-rails user-roles


    【解决方案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)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 2015-08-01
    • 2018-11-25
    • 2017-03-06
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    相关资源
    最近更新 更多