1. You do not need multiple roles or a role table
CanCan is independent of how you define roles in your application. You can just as easily have a role field in your user model.
As for the "active" and "inactive" users, you have two options. You can have a field for this status, or you can have a "inactive" role and consider any other role to be "active". It depends on what you mean by “active” and how you use this information in your application.
2. There is nothing wrong with keeping the user role in the string.
The fact that the role is stored as a string does not make it less secure. However, you must use attr_protected to prevent the mass assignment of a user role.
attr_protected :role
Therefore, users will not be able to update their own roles.
source share