Take a look at this question.ActiveRecord Rails запрос эффективно
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
Я пытаюсь получить список подарков, полученных и предоставленных всеми пользователями, которых следует за текущим пользователем. Есть ли лучший способ сделать это? Результаты не работают и отображаются некоторые дубликаты. Я пытаюсь сделать эффективный запрос, который я могу разбивать на страницы.
В моей 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'
Для следующей функциональности, я использую acts_as_follower gem.
Можете ли вы поделиться сведениями об ассоциациях following_users, given_gifts и received_gifts? Кроме того, какой заказ вы ожидаете для конечного результата? –
Yup! Конечно, просто отредактировал вопрос. Я пытаюсь получить конечный результат в хронологическом порядке от самого нового до самого старого. Пожалуйста, дайте мне знать, если вам нужны какие-либо другие детали! Благодаря! –