Я работаю на сайте социальных сетей, и у меня есть все, что работает в дружбе, кроме общих друзей. Я не могу заставить его работать.Отображение общих друзей
Это моя модель пользователя:
has_many :friendships
has_many :friends, -> { where(friendships: {status: 'accepted'}).order('created_at') }, :through => :friendships
has_many :requested_friends, -> { where(friendships: {status: 'requested'}).order('created_at') }, :through => :friendships, :source => :friend
has_many :pending_friends, -> { where(friendships: {status: 'pending'}).order('created_at') }, :through => :friendships, :source => :friend
Модель Дружба:
class Friendship < ActiveRecord::Base
belongs_to :user
belongs_to :friend, :class_name => 'User', :foreign_key => 'friend_id'
validates_presence_of :user_id, :friend_id
# Create a friendship request.
def self.send_request(user, friend)
unless user == friend or Friendship.exists?(user, friend)
transaction do
create(:user => user, :friend => friend, :status => 'pending')
create(:user => friend, :friend => user, :status => 'requested')
end
end
end
# Accept a friend request.
def self.accept_request(user, friend)
transaction do
accept_one_side(user, friend)
accept_one_side(friend, user)
end
end
# Decline a request, disconnect or cancel a pending request.
def self.breakup(user, friend)
transaction do
destroy(find_by_user_id_and_friend_id(user, friend))
destroy(find_by_user_id_and_friend_id(friend, user))
end
end
# Return true if the users are (possibly pending) friends.
def self.exists?(user, friend)
not find_by_user_id_and_friend_id(user, friend).nil?
end
private
# Update the db with one side of an accepted friendship request.
def self.accept_one_side(user, friend)
request = find_by_user_id_and_friend_id(user, friend)
request.status = 'accepted'
request.save!
end
end
Я попытался это: rails activerecord, friend relation + inverse_friend relation how to get the mutual relation? code included, но до сих пор я не могу заставить его работать.
спасибо.
Я уже попробовал первый путь и был вопрос, который я не мог Исправить. Здесь: http://stackoverflow.com/questions/32804059/intersection-outputs-the-results-in-view – cyonder
Кажется, что все исправлено сейчас –