Relaciones ternarias en rails

Hola a todos,

He estado buscando información sobre el tema pero en todos los sitios
sólo encuentro información relativa a relaciones entre dos modelos
(binarias).

¿Alguien puede darme una pista de como reflejar una relación N:M:P entre
tres modelos en rails?

Es decir, tengo tres modelos (Jugadores, Equipos y Jornadas). La
relación “alinea” (cada equipo alinea n jugadores cada jornada) es N:M:P
y por tanto tengo que tener una tabla intermedia con los campos clave
de las tres tablas (jugador_id, equipo:id y jornada:id) para mantener
esta relación.

¿alguien sabe si se puede usar alguna relación en rails para reflejar
esta situación? ¿has_many :through?..

Gracias por anticipado.

Y Alineacion no sera un cuarto modelo?

anievil escribió:

Josh | Vectrice wrote:

Y Alineacion no sera un cuarto modelo?

anievil escribió:

Quizás si que debería haber otro modelo alineación. De todas maneras
sigo tienendo el problema de que no se como representar relaciones
N-arias en rails.

anievil escribió:

Te recomiendo la lectura de este texto:
http://blog.hasmanythrough.com/articles/2006/04/20/many-to-many-dance-off

Saludos


Rafael Garcia Ortega

Rafael García wrote:

anievil escribió:

Te recomiendo la lectura de este texto:
http://blog.hasmanythrough.com/articles/2006/04/20/many-to-many-dance-off

Saludos


Rafael Garcia Ortega

Gracias Rafael!!

Ahora ya tengo claro que la solución está en usar asociaciones has_many
:through.

Extracto de tu artículo referenciado:
“N-way Joins
A habtm association can only join two models. But sometimes you need to
represent an association of multiple models. For example, a booking
might represent a flight, a passenger, and a seat assignment. Using a
through association, you can create a join model that joins as many
models as you need. The tricky part is building the queries to get at
the associated objects conveniently.”

Ahora voy a buscar más información sobre este tipo de relaciones para
ver si entiendo “COMO” las tengo que utilizar para resolver mi problema.