user roles recommendation

I'm in a dilemma. I have a users table. Each user has a role: admin, manager, agent, customer.

What do you recommend about the users table? Options: 1) in the users table, add a role column, type string, and enter the role as a string. 2) in the users table, add a role_id column (integer, foreign key) that connects to a roles table.

I know both ways would work, but I would like to know if one approach is better than the other and why. What has been your experience?

--basic question from a newbie

if string (text), use serialize and serialize your array of symbols to this column

eg

USER_ROLES = {   :admin => "administrator", :user => "Common user", :guest => "guest user" }

serialize :user_role

and use :user_role as array of roles

or

another table has advantage of some changing, holding other properties (as human name, description, etc)...

If you're making a roles system on your own, I'd recommend using cancan by Ryan Bates instead. It's very powerful, and integrates with popular authentication libraries out-of-the-box.

cancan => https://github.com/ryanb/cancan

I think you could use STI (single table inheritance) and create a class for each role.

Best regards,

Everaldo