Model newb qustion

Just started learning about Rails and I'm trying to figure modeling out in my head and I was hoping for some direction. Maybe I am thinking too much and have confused myself but I figure if I don't get it right now it may get worse in the future. This is my first attempt to create a site:

So I am trying to model users. There are multiple users with different access rights. So what is not right in my head is this:

-Do I create one User model and then within the table distingush the different users in a field?


-Do I create a model for each of the users? (Like: Admin model, Agent model, Tutor model, Parent model, Student Model ...)

In my model I have agents, tutors, parents, students, and admin. Tutors provide services that can be purchased through the site by students or parents. The Tutors are signed up to an account by agents.

Which would be right from the following? Agents have many tutors or should I say Agents have many accounts (and then tie the tutor to the account? which I guess would then be accounts have one tutor?)

I'm wondering if I just answered my first question about what should be a model or not. If an object has associations then is it automatically a model?

One of the things that is making me think that there should only be the one User model is that if I have a login system and each user group sees something different then how does the login controller check against multiple different user groups in different models?

Thanks for any help in advance.


How about having a User and Role model and having them associated with each other via a HABTM or a has_many :through?

Why not use Single Table Inheritance where you have a column 'type' for storing the type of user. Then you will be having a single User model.

I think this might be helpful to you:

Also in the Book Practical RAils Social Networking Sites the author Alan Bradburne works through this by using a role model and assigning roles to the users. The Administrator then controls who has what role. You might look at this method

I am a newb also - so books and forems help alot - Owen