Авторизовать результаты поиска elastics с помощью cancan

Есть ли у вас какие-либо предложения, как выполнить авторизацию результатов elasticsearch (используя шину) с помощью канкана?

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

Что вы думаете?


person spas    schedule 22.07.2012    source источник


Ответы (1)


Для правильного ответа потребуется немного больше кода, чтобы правильно понять вашу ситуацию.

А вообще, как пример:

  1. Вы должны хранить идентификаторы пользователей, которые могут получать доступ к документу или управлять им непосредственно в документе (например, свойство author_ids)
  2. Вы должны передать идентификатор пользователя (на основе значения current_user.id) фильтру term/terms.
  3. В качестве альтернативы вы можете использовать логический запрос, но фильтры будут быстрее и эффективнее.
  4. Ваши результаты отфильтрованы.

Обратите внимание, что есть еще много возможных подходов с elasticsearch и Tire, например:

  1. Вы используете "отфильтрованные псевдонимы". функция в elasticsearch, позволяющая настроить «виртуальный» индекс для каждого пользователя, автоматически фильтруемый на слое elasticsearch.
  2. Вы вводите это имя индекса для поиска в Tire.
person karmi    schedule 25.07.2012
comment
У меня есть несколько фасетов, и я запускаю на них фильтр geo_distance... позволяет ли шина создавать несколько фасетных фильтров? Я просто вижу вариант для одного... - person spas; 26.07.2012
comment
Метод filter DSL — это всего лишь крошечная оболочка вокруг Ruby Hash, поэтому ключ facet_filter Hash должен принимать все, что принимает сам elasticsearch; github.com/karmi/tire/blob/master/ test/integration/ [Пожалуйста, сообщите о проблеме с примером, если это не так] - person karmi; 28.07.2012