Мне нужно возвращать результаты, основываясь на поиске тегов, которые позволяют исключить теги, поставив перед ними дефис (т. Е. «Food, -water»)
Пока у меня есть поиск по тегам, работающий с этимв моей модели ресурсов:
resources = paginate(page: page, per_page: 30).where('tags.name IN (?)', tags).group('resource_id').having('COUNT(tags.id) = ?', tags.count).joins(:tags)
tags - это массив тегов, переданных в условиях поиска и проанализированных с помощью шаблона регулярных выражений.
Чтобы удалить результатыкоторые включают в себя «воду», я перебираю результаты и удаляю их следующим образом:
resources.delete_if do |resource|
(resource.tags.map(&:name) & exclude_tags).present?
end
При использовании гема will_paginate это создает проблему с возвращенными результатами.Если я запрашиваю 30 результатов назад, и после получения этих результатов 6 из них удаляются, так как они включают в себя исключенный тег (вода), тогда конечным результатом будет браузер, отображающий 24 результата вместо 30.
Как я могу выполнить это в запросе ActiveRecord вместо удаления их после получения результатов?