[Ror-es] Re: Auto-relación simétrica
Sergio Gil Pérez de la Manga
Mon Feb 20 08:52:47 GMT 2006
El día 14/02/06, Sergio Gil Pérez de la Manga
escribió:
>
> 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.
>
Hola,
Tengo la (creo que sana) costumbre de, cuando planteo una duda en una lista
de correo, y acabo dando con la solución, bien por mi cuenta bien mezclando
las respuestas de la lista, publicar esa misma solución en la propia lista,
para que quede en los archivos por si a alguien le viene bien a posteriori.
Este es el código salvador, leído en
http://synthesis.sbecker.net/articles/2006/01/19/active-record-relationship-design-patterns(y
añadido a
http://del.icio.us/tag/para:ror-es):
class User < ActiveRecord::Base
has_and_belongs_to_many :users,
:join_table => 'users_known_users',
:foreign_key => 'known_user_id',
:association_foreign_key => 'user_id',
:after_add => :create_reverse_association,
:after_remove => :remove_reverse_association
def known_users
self.users
end
private
def create_reverse_association(associated_user)
associated_user.known_users << self unless
associated_user.known_users.include?(self)
end
def remove_reverse_association(associated_user)
associated_user.known_users.delete(self) if
associated_user.known_users.include?(self)
end
end
Un salido, digo un saludo =;-)
--
Sergio Gil Pérez de la Manga
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://barclay.textdrive.com/pipermail/ror-es/attachments/20060220/aa450406/attachment.htm