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


  :admin => "administrator",
:user => "Common user",
:guest => "guest user"

serialize :user_role

and use :user_role as array of roles


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 =>

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

Best regards,