Поиск тегов для включения / исключения с помощью Rails will_paginate gem - PullRequest
1 голос
/ 15 марта 2012

Мне нужно возвращать результаты, основываясь на поиске тегов, которые позволяют исключить теги, поставив перед ними дефис (т. Е. «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 вместо удаления их после получения результатов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...