У меня есть модели с именами Issue
и Label
.Каждый issue
может иметь много labels
.У каждого label
может быть много issues
.
Я пытаюсь создать запрос, который будет возвращать проблему, содержащую все предоставленные метки.
Например, если я поставлю ['bug', 'fix', 'enhancement']
Я хочу, чтобы проблемы имели как минимум все три из этих трех меток.
В настоящее время у меня есть:
labels = ['bug', 'fix', 'enhancement']
Issue.joins(:labels).where(labels: { name: labels }).distinct
Но этого недостаточно, поскольку он возвращает проблемы, у которых есть хотя бы одна изназвания этикеток.Я вижу, это потому, что генерируется оператор IN:
WHERE "labels"."name" IN ('bug', 'fix', 'enhancement')
И с этого момента я потерян.Массив labels
может быть любой длины.Могу ли я получить нужный результат в одном запросе?
Как найти в таблице строки, которые указывают на строки в другой, которые соответствуют всем указанным значениям столбца?