Я строил сайт социальной сети. У меня есть таблица пользователей. Каждый пользователь может иметь целый ряд других пользователей, как друзья, так что у меня есть вторая таблица Друзья:ActiveRecord: создание отношения «один ко многим» назад к себе
user_id
friend_id
На основании этого ответа я пытаюсь создать отношения. У меня есть,
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
...
и
class Friend < ActiveRecord::Base
belongs_to :user
belongs_to :source_friend, :class_name => "User", :foreign_key => "friend_id"
end
Когда я пытаюсь использовать таблицы с этим, на мой взгляд:
<% @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 %>
имена возвращаемые всегда те из исходного пользователя, а чем целевой друг.