A client has asked me to modify their existing application to allow
for clients and tutors to be able to login, modify their personal
information, input time and other actions. The application has a
single table called contacts and uses single table inheritance to
define three models Contact, Client (descendent of Contact) and Tutor
(descendent of Contact). There is also a User model and subsequent
table that contains the actual user accounts of the employees of the
The client now wants Tutors and Clients to have their own unique
logins to allow them to perform various actions depending on what type
of user they are. For example, a tutor can login and enter their
weekly hours while a Client can login and see their bill and pay it.
My question is how should I refactor this to allow for clients, tutors
and users to login, but each be shown a different set of options &
interface. My initial thought pattern was to move Clients & Tutors to
the Users table and inherit from it, but I think I need to seek second
opinion before moving forward.