Объединение двух коллекций ассоциаций ActiveRecord в одну коллекцию ассоциаций - PullRequest
0 голосов
/ 02 октября 2018

У меня есть модель сообщений, в которой пользователи могут добавлять сообщения, похожие на Facebook.

В новостной ленте я хочу показывать их в порядке убывания по отношению к creat_at.

Проблема

current_user.posts

возвращает его / ее сообщения, тогда как

current_user.networks.each {|network| network.connection.posts}

возвращает сообщения его соединения.

Я хочу объединить оба результата, чтобы я мог написать что-то вроде

all_posts.order(created_at: :desc)

или есть ли лучший способ сделать это?

РЕДАКТИРОВАТЬ

С кодами

user.rb

has_many :posts

post.rb

belongs_to :user

network.rb

belongs_to :user
belongs_to :connection, class_name: 'User'

где модель сетиявляется совместной и самоссылочной моделью и имеет столбцы user_id и connection_id и обновляется, когда оба пользователя становятся друзьями.

1 Ответ

0 голосов
/ 02 октября 2018

Попробуйте:

user_post_ids = current_user.post_ids
connection_post_ids = []
current_user.networks.each do |network|
  connection_post_ids += network.connection.post_ids
end
post_ids = user_post_ids + connection_post_ids

all_posts = Post.where(id: post_ids).order(created_at: :desc)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...