I haven’t used this myself and am not necessarily endorsing it, but if you find something dirty about creating a bunch of null able columns on your users table, the is another way to go about it.
Any future named scopes or Active Record queries might get weird.
Have you completely ruled out composition over inheritance? Will a user be of only one type? Will a teacher never also be a student or an admin?
Thanks @Jerry_Busser, I got totally sidetracked on this. I’m back on it now so I’ll look into hstore.
I read some about composition but couldn’t figure out bow it would directly apply to this case. Do you hacve any favourite resources where I can learn more about it?