[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