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)…

On Jul 25, 2011, at 20:16 , Leonel . wrote:

better than the other and why. What has been your experience?
For more options, visit this group at

Tomas Meinlschmidt, MS {MCT, MCP+I, MCSE, AER}, NetApp Filer/NetCache

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

cancan => GitHub - ryanb/cancan: Authorization Gem for Ruby on Rails.

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

Best regards,