Tricky model situatione

I have two models Club and users. users are regular authenticated users and some of them might create a club. A club can also have members (essentially users) and there are attributes and models that apply to member but not to users.

Here is what I have right now.

Club => belongs_to :user

User => has_many clubs (since a user can host multiple clubs).

Now how do I fit this member model into the picture, a club can have many member, but since a club only has one user(the user who owns the club), I can't really do a Club => has_many :users. do i need to create a different model named ClubOwner for users who host clubs or is there a better way to do this.

Thanks for reading and helping!

I have two models Club and users. users are regular authenticated users and some of them might create a club. A club can also have members (essentially users) and there are attributes and models that apply to member but not to users.

Here is what I have right now.

Club => belongs_to :user

User => has_many clubs (since a user can host multiple clubs).

Now how do I fit this member model into the picture, a club can have many member, but since a club only has one user(the user who owns the club), I can't really do a Club => has_many :users. do i need to create a different model named ClubOwner for users who host clubs or is there a better way to do this.

You can use something like Club has_many :members, :class_name => 'User', :foreign_key => 'club_membership_id' User belongs_to :club, :foreign_key => 'club_membership_id'

However that will only allow a user to be a member of one club, so probably you need a membership joins table so that you can have a club with many members and users in many clubs, each through the memberships table. The rails guide on activeRecord associations will help you.

Colin

Assuming that a User can belong to many Clubs, you'll need a join table between the two:

class User < AR::Base   has_many :owned_clubs, :foreign_key => 'owner_id', :class_name => 'Club'   has_many :club_memberships, :dependent => :destroy   has_many :clubs, :through => :club_memberships end

class ClubMembership < AR::Base   belongs_to :user   belongs_to :club end

class Club < AR::Base   has_many :club_memberships, :dependent => :destroy   has_many :users, :through => :club_memberships   belongs_to :owner, :class_name => 'User' end

You'll need to move your existing 'user_id' column on Club to 'owner_id'.

Hope this helps!

--Matt Jones

Thanks Matt and Colin.

I am guessing I will need to change the routes like..

map.resources :users, has_many => :owned_clubs?