junction table question

I'm looking into how to implement a relationship between some models, and I think I need to use a junction table. From the documentation I've read, a junction table doesn't require a model. But from my controller, I'm not sure how to get the data I need. Here's a description of my models and what I need in my controller:

Models 1. Event 2. Site 3. Participant

Relationships: 1. An event can have multiple sites (example video conferencing) 2. A site can have multiple events 3. Participant goes to an event at a location

Database Tables: 1. event_sites (:id, :event_id, :site_id) 2. participants (:id, :event_site_id, ...)

And in my participant controller, I need to get the sites available for a particular event the participant is signing up for (new action). Any thoughts on how I can get that data from the junction table, or a better approach in general? Thanks.

I'm looking into how to implement a relationship between some models, and I think I need to use a junction table. From the documentation I've read, a junction table doesn't require a model.

That's in the basic has_and_belongs_to_many relationship. You just provide a table with modela_id and modelb_id in it, and the relationship takes care of the rest.

But from my controller, I'm not sure how to get the data I need. Here's a description of my models and what I need in my controller:

Models 1. Event 2. Site 3. Participant

This is a rich relationship, described in the "has_many :through" relationship. This is a full model-backed join object, not the lightweight join table in habtm. You will need a model (although you won't need a separate controller) to get at any of the data stored in this relationship.

Walter

Thanks Walter for your reply. I had thought the two techniques equal (has_and_belongs_to_many and has_many :through). Thanks for the insight.