2012-07-22 2 views
2

cancan을 사용한 elasticsearch 결과 (타이어 사용) 승인을 수행하는 방법에 대한 제안이 있습니까?cancan을 사용한 elasticsearch 결과 승인

내 접근 방법은 cancan이 모델을로드하고 권한을 부여하고 모든 권한 부여 ID를 타이어 검색에 전달하거나 다른 방법으로 전달하도록하는 것입니다.

당신은 어떻게 생각하십니까?

답변

5

올바른 대답은 상황을 정확하게 이해하는 데 약간 더 많은 코드가 필요합니다. 일반적으로

그러나, 예를 들어 :

  1. 당신은 사용자 ID (들)을 저장하는 것 (예를 들어 author_ids 속성입니다.)
  2. /액세스 문서에 문서를 직접 조작 할 수있는 사용자에 대한 사용자 ID (current_user.id 값 기준)를 term/terms 필터로 전달합니다.
  3. 또는 부울 쿼리를 사용할 수 있지만 필터가 더 빠르고 효율적입니다.
  4. 결과가 필터링됩니다.

참고, 예를 들어 elasticsearch 및 타이어와 더 많은 가능한 접근 방법이 있다는 것을 :

  1. 당신은 각 사용자에 대해 "가상"인덱스를 설정, elasticsearch의 “filtered aliases” 기능을 사용이 자동으로 탄성 검색 계층에서 필터링되었습니다.
  2. 이 색인 이름을 Tire의 검색에 삽입합니다.
+0

나는 여러 패싯을 가지고 있으며 geo_distance 필터를 실행 중입니다 ... 타이어가 다중 패싯 필터를 만들 수 있습니까? 나는 단지 하나의 옵션을 보았습니다 ... – spas

+0

'filter' DSL 메서드는 루비 해시 주위의 작은 래퍼이므로, 'facet_filter' 해시 키는 elasticsearch 자체가 취하는 모든 것을 취해야합니다. https://github.com/karmi/tire/blob/master/test/integration/facets_test.rb#L52 [해당되지 않는 경우 예를 들어 문제를 제출하십시오.] – karmi