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
- Event
- Site
- Participant
Relationships:
- An event can have multiple sites (example video conferencing)
- A site can have multiple events
- Participant goes to an event at a location
Database Tables:
- event_sites (:id, :event_id, :site_id)
- 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.
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.
On Aug 9, 2011, at 2:25 PM, Mickey C. wrote:
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
- Event
- Site
- 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