سؤال

أنا أسلم موقع الشبكات الاجتماعية. لدي جدول للمستخدمين. يمكن أن يكون لكل مستخدم عددا من المستخدمين الآخرين كأصدقاء، لذلك لدي أصدقاء طاولة ثانية:

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 %>

تستخدم الأسماء التي تم إرجاعها دائما من المستخدم المصدر، بدلا من صديق الهدف.

هل كانت مفيدة؟

المحلول

حسنا، لقد قمت بحلها: قم بتغيير الإدخال الثاني ضمن المستخدم إلى:

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

ما زلت غير متأكد إذا كان الرمز في السؤال لديه بعض crud غير المعطوم هناك؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top