Получение сообщений всех пользователей, за которыми следует пользователь - 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 подарок, в моем фиде я хочу видеть только одно упоминание об этом вместо двух упоминаний об этом же подарке.