У меня есть записи статей и тегов с отношением HABTM.HABTM multi «and» query
Мне нужно фильтровать статью по массиву тегов с запросом «и».
С тегами ниже, мне нужны все «Салями» и «Пицца», срок действия которых истек.
теги = [ «салями», «Пицца», «Устаревшие»] // Элементы могут быть любое число от 1..n
я придумал следующее, но это возвращается каждый «салями» и «Пицца», срок действия которых не истек. Это также возвращает каждые детали истекли, которые не являются ни салями Пицца
def tags_query
render status: 200, json: Article.includes(:tags).where('tags.name' => params[:tags])
end
Единственная проблема, которую я вижу здесь, заключается в том, что логика на самом деле '(salami || pizza) && expired'? это псевдокод для отображения логики ... – jaydel
Возможно, вы правы. В этом случае мой ответ неверен и будет возвращать только те статьи, которые истекли Salami Pizzas. – IngoAlbers
Я думаю, что вы на правильном пути. вы можете превратить свое место в OR с первыми двумя тегами, а затем связать другой, где для тега с истекшим сроком? OR должен быть строкой SQL, с которой я бегу от ужаса в своем коде ActiveRecord. Вы можете использовать синтаксис Arel для достижения OR, но это значительно сложнее. – jaydel