I am creating application which requires User management of various
levels for authorization of different level of users.
I want several models:
Project Manager
Account : have many users of all level.Every user have account.
See below the relations between our models:
1. Admin_user : have many project managers and can give rights to
project manager.It can add and delete Project managers.Admin can
access or manage any level of this application i.e. Its a SUPER USER.
2.Project manager : have many companies.It can create and delete many
companies. Project Manager can also add new project manager if
Admin_user give right to him to create new project manager.its all
depends on Admin_user to give or take rights from PM.
3. Companies : can create and delete many client_users but cannot
create any company in th same level.Company also start or stop rights
of client.
4.Client :can have account login and use services provided by company
nothing more than that.
This is my model Association. But i m confused what can i make first
Account model or a Admin_user model.

I think you may be going about this the wrong way. Instead of having
many different models for the user types have one model for all users
and assign roles to give them different permissions. Have a look at
the cancan gem.


CanCan would be simple to achieve what you want.Install cancan gem and define Ability.rb in models

Sample Abillity.rb might look like this.

class Ability
   include CanCan::Ability

   def initialize(user)
     # Define abilities for the passed in user here. For example: