IndexTank, как обрабатывать разрешения - PullRequest
4 голосов
/ 21 мая 2011

Он ** LLO, С учетом индекса Indextank вот так: Класс Threads включая танкер

  tankit 'rails_3_demo' do
    indexes :content
  end

  after_save :update_tank_indexes
  after_destroy :delete_tank_indexes

end

Этот индекс существует в моей модели потоков. Проблема в том, что у потоков есть разрешения. В настоящее время, если бы я позволил пользователю выполнять поиск по индексу, он будет искать по всем потокам пользователя. Что такое умный способ обработки разрешений, чтобы пользователь мог выполнять поиск только в тех потоках, к которым у него есть права доступа. Спасибо **

SCHEMA:

USER (id)
PROJECT (id)
PERMISSION (user_id, project_id)
Thread (project_id)

Пока у пользователя есть запись разрешения для проекта, он может просматривать все потоки этого проекта.

1 Ответ

5 голосов
/ 22 мая 2011

Один из способов сделать это состоит в том, чтобы также индексировать разрешения и добавлять «И разрешения: [значение]» к вашим запросам, где значение - это разрешения, которые соответствуют пользователю. Таким образом, пользователь будет видеть только те результаты, которые имеют необходимые разрешения.

Чтобы дать вам больше подробностей, мне нужно знать вашу схему разрешений, но, например, ваша переменная разрешений, которую вы индексируете, может быть строкой со словами, такими как «root joe bob jim» для потока, который предназначен только для этих пользователей. можно получить доступ.

...