Domanda

Sto costruendo un sito di social networking. Ho una tabella di utenti. Ogni utente può avere un certo numero di altri utenti come amici, quindi ho una seconda tabella Amici:

user_id
friend_id

In base a questa risposta che sto cercando di creare le relazioni. Ho,

class User < ActiveRecord::Base
  has_many :friends, :dependent => :destroy
  has_many :users, :through => :friends

  has_many :source_friend, :class_name => "Friend", :foreign_key => "friend_id", :dependent => :destroy
  has_many :source_users, :class_name => "User", :through => :friend_id
  ...

e

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

Quando provo e utilizzare le tabelle con questo, a mio avviso:

<% @user.users.each do |friend| %>
  <% if friend.status == User::ACTIVE %>
    <p>
      <%= link_to h(friend.name), :controller => "user", :id => h(friend.name)%>
    </p>
  <% end %>
<% end %>

i nomi restituiti sono sempre quelli degli utenti di origine, piuttosto che l'amico di destinazione.

È stato utile?

Soluzione

Va bene, ho risolto: cambiare la seconda voce in Utente da:

  has_many :users, :through => :friends, :source => :source_friend

Non sono ancora sicuro se il codice in questione ha una certa CRUD non necessari in là?

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