Я использую act_as_taggable_on для тегов в наших проектах, а также sunspot / solr для поиска.
Мы получаем странный неожиданный результат.Сначала наша установка (короткая версия):
Модель:
Class Person
has_many :projects
searchable do
string :project_tags, :multiple => true do
projects.map { |p| p.tag_list}.flatten
end
end
Taglist - это метод из act_as_taggable_on, который возвращает массив тегов для каждого проекта (fe ["foo", "bar").]).Мы индексируем теги проекта для участников проекта.
Когда в нашем контроллере мы делаем:
Person.search() do
with(:project_tags).any_of(params[:tags])
end
Это возвращает нужных людей.Пока все хорошо.
Проблема
Мы хотим иметь возможность искать несколько тегов.Итак, согласно инструкциям солнечного пятна, мы передаем массив.Код выглядит примерно так:
@tags_array= params[:tags].split(/ /)
Person.search() do
with(:project_tags).any_of(@tags_array)
end
Теперь Sunspot дает нам каждого человека в результате, независимо от того, какие теги мы используем!Мы тестировали это в консоли, как сумасшедший, но не можем понять, в чем дело.
Любая помощь будет принята!
Эрвин