Eli Gibson wrote:
> I am curious is there is a convention for the the following in CRUD:
> 
> I have users and groups. Each group can have many users, and each user
> can have many groups.
> These are related through a has_many :through pattern, with the
> connecting model being membership.
> 
> The most common uses of these data are to get a list of groups for one
> user, or a list of users for one group, or to check if two users are
> in the same group.
> 
> What would be the best way to set up the controllers so that these
> uses are easy and intuitive. Or, what setup would make it easiest for
> the next developer to grok the system when I get hit by a bus.
> 
> Regards,
> 
> Eli

Hi Eli,

The great thing about RESTful development is that you can set up 
multiple resources to access the same controller. So you could do 
something like:

map.resources :users, :has_many => :user_groups
map.resources :user_groups, :has_many => :users

The being said you controller and views need to be flexible enough to 
allow for a parent record to be present or not. I would recommend taking 
a look at the resource_controller plugin for this, it gives you all 
kinds of nifty methods for dealing with this.

Then to make all of this work I would do something like this in your 
models:

has_many :user_groups, :through => :memberships

Now your interface can be set up however you want, and flexible enough 
to access the data from both ends:

users/2/user_groups
user_groups/2/users

Hope this helps.
-- 
Posted via http://www.ruby-forum.com/.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to