ActiveRecord получить все сообщения внутри массива категорий со всеми их категориями - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть две модели, подобные этой:

class Category < ApplicationRecord
  has_and_belongs_to_many :posts
end

class Post < ApplicationRecord
  has_and_belongs_to_many :categories
wns

Я пытаюсь получить все сообщения, которые находятся внутри массива категорий:

Post.includes(:categories).where(categories: { name: current_user['categories'] })

Проблема в том, что когда в Посте есть несколько категорий, они не включены. Только категории, которые явно указаны внутри current_user['categories'], возвращаются для каждого сообщения.

В основном, если я ищу все сообщения в категориях A и B current_user['categories'] = ['A','B'], если сообщение относится к категориям A и C, мой запрос будет возвращать только категорию A. Я хочу, чтобы публикация возвращала категории A и C.

1 Ответ

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

как насчет этого? или есть другая таблица между сообщениями и категориями

post_ids = Category.where(name: current_user['categories']).collect(&:post_id).uniq

также вы можете использовать гораздо лучше, срывать

post_ids =  Category.where(name: current_user['categories']).pluck("distinct post_id")

Post.includes(:categories).where(id: post_ids)
...