Self referential habtm

Perdonad por la pregunta tonta,
pero tengo una tabla de usuarios donde guardo el nombre y una tabla de
amigos del tipo:

create_table :users_friends do |t|
  t.column :user_id, :integer
  t.column :friend_id, :integer
end

En el modelo user.rb he creado la siguiente relación:

has_and_belongs_to_many :friends,
:class_name => “User”,
:join_table => “users_friends”,
:association_foreign_key => “friend_id”,
:foreign_key => “user_id”#,
:after_add => :be_friendly_to_friend,
:after_remove => :no_more_mr_nice_guy

def be_friendly_to_friend(friend)
friend.friends << self unless friend.friends.include?(self)
end

def no_more_mr_nice_guy(friend)
friend.friends.delete(self) rescue nil
end

Desde consola puedo hacer:

u1 = User.find(1)
u2 = User.find(2)
u1.friends << u2

Y la relación se hace sin problemas…¿pero como puedo eliminar ahora la
relación?; si hago:

u1.friends.find(u2).destroy

En vez de eliminarme la relación, me borra el usuario.

¿Alguna idea por favor? Gracias.

On Sat, Dec 22, 2007 at 09:17:38AM +0100, Mario S. wrote:

u1.friends.find(u2).destroy

En vez de eliminarme la relación, me borra el usuario.

Para eliminar un elemento de la relación usa delete

u1.friends.delete(u2)

Eso te eliminará la relación entre u1 y u2 sin borrar ninguno de los
registros.

Espero que te sirva.

Muchas gracias, funciona :wink: