Я не уверен, как лучше задать этот вопрос. У меня есть модель Item
и модель Tag
, ассоциация has_and_belongs_to_many
Мне нужно получить результат из таблицы items_tags
, которая содержит item_id, которые имеют записи с 2 тегами. Пример:
Здесь мне нужен item_id, который tag_id и в 1, и в 2. (результат: item_id = 4)
Так что еслиЯ использую WHERE tag_id = 1 AND tag_id = 2
- нет результатов. Если WHERE tag_id IN (1,2)
- слишком много результатов (красный и зеленый)
Я могу выполнить следующие шаги:
1) first = tag1.items.pluck(:id)
2) second = tag2.items.pluck(:id)
3) what_i_need = (first & second)
Другой способ - это один запрос: tag1.items.where(id: tag2.products.pluck(:id))
Есть ли другой (более быстрый) способ сделать это с некоторым вариантом JOIN?