[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