Domanda

Questo è il mio codice:

class Friend < ActiveRecord::Base
  belongs_to :user
  belongs_to :friend, :class_name => "User", :foreign_key => "friend_id"
end

class User < ActiveRecord::Base
  #...
  has_many :friends
  has_many :users, :through => :friends
  #...
end

Quando ora comincio aggiunta di utenti da ...

user.users << user2
user.save

Solo l'id_utente di amico è piena, friend_id è nullo.

Qualsiasi aiuto?

I tuoi, Joern.

È stato utile?

Soluzione

È necessario aggiungere l'attributo :source per la vostra associazione has_many through.

class User < ActiveRecord::Base
 has_many :friends
 has_many :users, :source => :friend, :through => :friends
end

Ora i seguenti chiamate funzioneranno.

u1.users << u2    
u.friends.last
# will print #<Friend id: 1, user_id: 1, friend_id: 4>

Note:

  1. Rails automatico salva l'associations.You bisogno di chiamare save solo se il modello utente è nuovo.
  2. Probabilmente dovrebbe rinominare l'associazione a qualcosa di più esplicito. Per esempio:. friend_users etc

Altri suggerimenti

Prova: Railscasts - autoreferenziale Associazioni . ha in genere molto buoni tutorial su tutti i temi elencati.

Penso che è necessario eliminare l'belongs_to: utente nel modello Friend

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top