Получение сообщений всех пользователей, за которыми следует пользователь - rails - ActiveRecord

У меня есть простое приложение, где пользователи могут дарить друг другу виртуальные подарки. Каждый подарок принадлежит двум пользователям, дарителю и получателю.

В моемUser.rb

has_many :given_gifts, class_name: 'Gift', foreign_key: 'giver_id'
  has_many :received_gifts, class_name: 'Gift', foreign_key: 'receiver_id'

  acts_as_followable
  acts_as_follower

В моемGift.rb

belongs_to :giver, class_name: 'User'
belongs_to :receiver, class_name: 'User'

Я используюact_as_follower gem чтобы пользователи могли следить за другими пользователями и видеть список подарков, которые они подарили и получили.

В моем контроллере:

id = current_user.id
@given_gifts = User.find(id).following_users.includes(:given_gifts).collect{|u| u.given_gifts}.flatten

@received_gifts = User.find(id).following_users.includes(:received_gifts).collect{|u| u.received_gifts}.flatten

@gifts = @given_gifts.zip(@received_gifts).flatten.compact

Я уверен, что я делаю это действительно неправильно. Это дает мне список подарков с некоторыми дубликатами, и все они не в порядке.Как я могу эффективно получить список всех подарков, полученных и полученных пользователями, за которыми следует любой данный пользователь, чтобы у них не было дубликатов, все в порядке и чтобы я мог разбивать результаты на страницы?

Если как пользователь я следую за пользователем X и пользователем Y, а пользователь X подарил пользователю Y подарок, в моем фиде я хочу видеть только одно упоминание об этом вместо двух упоминаний об этом же подарке.

Ответы на вопрос(2)

Ваш ответ на вопрос