У меня есть этот запрос ActiveRecord, который дает мне сообщения, содержащие любой из тегов, перечисленных в tag_ids:

Post.joins(:tags).where(tags: { id: tag_ids })

Могу ли я стать эксклюзивным вместо инклюзивного? Мне нужны только сообщения, соответствующие всем тегам в tag_ids.

Я использую Postgres, и, может быть, это можно сделать через arel?

Благодарность !

0
Alb Dum 22 Мар 2021 в 17:15

1 ответ

Лучший ответ

Попробуй это:

Post.joins(:tags).where(tags: { id: tag_ids}).group(:id).having("COUNT(DISTINCT tags.id) = #{tag_ids.count}")
0
anonymus_rex 22 Мар 2021 в 17:49