0

I would like to do the following

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

Add a role to users

User1.add_role :teacher
User2.add_role :teacher

User1.has_role? :teacher
>> true

User2.has_role? :teacher
>> true

Delete a role from a specific user

User1.remove_role :teacher

User1.has_role? :teacher
>> false

User2.has_role? :teacher
>> true

I am having a problem because currently

User1.has_role? :teacher 

is returning TRUE even after a remove. However when I do User1.roles it returns an empty array as expected and has_any_roles? returns false as expected. Why is it returning TRUE even after the role is removed?

MicFin
  • 2,431
  • 4
  • 32
  • 59

1 Answers1

1

you need to reload the user before checking if it has a role again

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

    User1.has_role? :teacher
    -> false
svelandiag
  • 4,231
  • 1
  • 36
  • 72
Carlos Roque
  • 448
  • 5
  • 11