Hi Henrique,
Think of it this way: you have a site, and each person visiting your site, regardless of whether they're an admin or a member, will have a username, password, and a name. This common information is what you put in your user model. That way, everyone who visits your site and has an account (of any kind) can log in, and they're all using the same User model.
A subset of those users - the members - will then have a Profile. This profile describes the specific details of their membership (I don't know the specifics for your case, but this could be things like the expiry date for their membership, or their address for correspondence). Only member users will have a profile.
You put a flag on the user model that describes is_admin; this tells you whether the user has admin access. Whenever you want to know "is this user a member", you can look for their membership profile. If it exists, they're a member; if it doesn't, they're not.
Interestingly, this allows you to have admin users who are also members, so admins of your system can maintain accounts like normal members. If you don't want this, you can prevent it with business logic when creating accounts.
This approach also allows you to have different types of members -- just associate multiple member profile models with the same user. So, for example, if you need to store additional details about your admin users, you can maintain an AdminUserProfile to keep that data, independent of the MemberUserProfile.
Does that make sense?
Yours,
Russ Magee %-)