Rolify has_role? remove_role后返回true

时间:2014-10-10 14:25:11

标签: ruby-on-rails-4 devise cancan rolify pundit

我想做以下

User1 = User.find(1)
User2 = User.find(2)

为用户添加角色

User1.add_role :teacher
User2.add_role :teacher

User1.has_role? :teacher
>> true

User2.has_role? :teacher
>> true

从特定用户删除角色

User1.remove_role :teacher

User1.has_role? :teacher
>> false

User2.has_role? :teacher
>> true

我遇到了问题,因为目前

User1.has_role? :teacher 
删除后,

返回TRUE。但是,当我执行User1.roles时,它返回一个空数组,如预期和has_any_roles?按预期返回false。为什么即使在删除角色后它也会返回TRUE?

1 个答案:

答案 0 :(得分:1)

您需要在检查用户是否再次拥有角色之前重新加载用户

    User1.remove_role :teacher
    User1.has_role? :teacher
    -> true
    User1.reload

    User1.has_role? :teacher
    -> false