[Ror-es] Auto-relación simétrica
Sergio Gil Pérez de la Manga
Tue Feb 14 16:47:38 GMT 2006
Ole los títulos raros ;)
A ver, cuento lo que quiero hacer, lo que he conseguido, y a ver si a
alguien se le ocurre cómo puedo completar la tarea.
Tengo un modelo llamado Contact, que almacena contactos, y me gustaría poder
relacionarlos unos con otros. Leyendo un poco por ahí [1], llego a lo
siguiente:
- Creo una tabla llamada contacts_contacts, con una columna llamada
contact_id, y otra, por ejemplo, related_id.
- En el modelo Contact:
has_and_belongs_to_many :contacts, :foreign_key => "related_id"
De esta forma se puede añadir un contacto como relacionado a otro, por
ejemplo:
un_contacto=Contact.find(1)
otro_contacto=Contact.find(2)
un_contacto.contacts << otro_contacto
un_contacto.contacts[0].name # "El nombre de 'otro_contacto'"
Perfecto.
Sin embargo, la relación que pretendo modelizar no es padre-hijo, sino de
igual a igual, de modo que sin hacer nada más, la relación quedara
almacenada en ambos contactos, de manera que también pudiera hacer:
otro_contacto.contacts[0].name # "El nombre de 'un_contacto'"
Cosa que ahora mismo no sucede. ¿Se os ocurre alguna forma de hacerlo?
Gracias :)
--
Sergio Gil Pérez de la Manga
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://barclay.textdrive.com/pipermail/ror-es/attachments/20060214/eb98ed12/attachment.htm