Forum: Rails-ES .: claves compuestas en tablas ?!?!

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
711c9ebc75867d98d013756a90b82a0e?d=identicon&s=25 _maxi __ (mreitz)
on 2007-01-31 13:32
Estimados: Como recien me estoy iniciando en el mundo rails vi en este
artículo
http://www.oracle.com/technology/pub/articles/haef...

que comentan que rails no soporta tablas con claves compuestas!!! Como
hago para el caso de tener una relacion N:N (muchos a muchos) cuya clave
es la primary key de cada una de las tablas que componen la relación???
Como resolvieron esto para mantener la integridad y las referencias
(cascade, set null, etc)?
Saludos y muchas gracias
1f2eadfb41362800ebc2cf211b91d0f7?d=identicon&s=25 javier ramirez (Guest)
on 2007-01-31 14:28
(Received via mailing list)
> que comentan que rails no soporta tablas con claves compuestas!!!
ActiveRecord no soporta tablas con claves compuestas, aunque si tuvieses
alguna por algún tema de legacy puedes utilizar sql directamente. De
hecho, para las consultas puedes seguir usando AR siempre y cuando
tengas la precaución de no usar el método find directamente sino el
método "find_by_clave1_and_clave2". Para los inserts y updates tendrías
que tirar de algún plugin o directamente de sql, con lo que te pierdes
los callbacks que proporciona rails.

> Como hago para el caso de tener una relacion N:N (muchos a muchos) cuya clave
> es la primary key de cada una de las tablas que componen la relación???
>
tienes un par de formas... una es una relación has_and_belongs_to_many
en la que se guarda exactamente lo que tú comentas, una FK por cada
tabla relacionada. Como en este caso no necesitas acceder nunca
directamente a la tabla intermedia, te da básicamente igual que tenga o
no una PK propia. La otra es un has_many_through, en el que sigues
teniendo una FK por cada tabla relacionada y además tiene un campo que
le hace de PK. Estas relaciones se usan cuando la relación en sí misma
tiene campos asociados y vas a tener que acceder a ella.
> Como resolvieron esto para mantener la integridad y las referencias (cascade, set null, 
etc)?
las referencias van a nivel de FK, así que no tienes problemas en
mantener la integridad.

saludos,

j

--
--------
Estamos de estreno... si necesitas llevar el control de tus gastos
visita http://www.gastosgem.com !!Es gratis!!
This topic is locked and can not be replied to.