Возвращение результатов поиска в Rails - PullRequest
0 голосов
/ 20 июля 2011

У меня проблема с реализацией специального вида поиска для моего приложения на Rails. Я работаю над системой достижений, в которой вы можете искать группу пользователей в форме поиска (например, запрос «Росс, Адам, Джейк»), и она возвращает все общие достижения, которые пользователи разблокировали (например, если у всех пользователей Росса, Адама и Джейка есть достижение под названием «Вы победитель!»). У меня есть три таблицы, одна для достижений, одна для пользователей и таблица соединений. Мы проверили ассоциации и тому подобное, поэтому знаем, что это работает.

Моя первая идея состояла в том, чтобы поместить поисковые термины в массив, получить результаты поиска для каждого элемента в массиве и поместить их в соответствующие «массивы результатов поиска». Затем я подумал о том, чтобы просмотреть каждый элемент в массиве результатов поиска 1, чтобы увидеть, присутствует ли он в обоих других массивах результатов. Объекты, которые появляются во всех трех массивах результатов поиска, будут возвращены и отображены на странице.

Есть ли простой способ реализовать это без написания собственного кода? Есть ли какие-то функции, о которых я должен знать? Любая помощь будет оценена!

Ответы [ 3 ]

0 голосов
/ 20 июля 2011

Вы можете использовать некоторый плагин автозаполнения для имен пользователей и конвертировать имена в идентификаторы на лету, таким образом, вам не нужно будет позже конвертировать имена пользователей в идентификаторы в бэкэнде.

Для обычных достижений, если пользователь может иметь достижение только один раз, объединение результатов в таблице соединений и подсчет результатов с идентификаторами достижений будет правильным решением.

Вы можете предоставить более подробную информацию для более подробного ответа. :)

0 голосов
/ 21 июля 2011

Вы можете использовать Sunspot , что позволяет легко интегрировать решения с Ruby и Rails

0 голосов
/ 20 июля 2011

Ну, и Ransack и его предшественник ( MetaSearch ) являются полезными камнями для создания сложных форм поиска.

В общем, я думаю, что вы хотите сделать что-то вроде выбора отдельных идентификаторов достижений для идентификаторов пользователей в массиве. Сверху головы я не совсем уверен, как вы должны это написать ... другие могут знать.

Посмотрите документацию по MetaSearch (более устоявшаяся) и посмотрите, видите ли вы подходящую модель, если не проверяете Ransack (более продвинутый).

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