使用cancan授权弹性搜索结果

spa*_*pas 2 cancan ruby-on-rails-3 elasticsearch tire

您有什么建议如何使用cancan执行弹性搜索结果(使用轮胎)的授权?

我的方法是让cancan加载并授权模型并将所有授权的id传递给轮胎搜索,或者反之亦然.

你怎么看?

kar*_*rmi 5

一个正确的答案需要更多的代码来正确理解你的情况.

但是,一般来说,作为一个例子:

  1. 您可以为可以直接在文档中访问/操作文档的用户存储用户ID(例如,author_ids属性)
  2. 您将用户ID(基于current_user.id值)传递给term/ termsfilter.
  3. 或者,您可以使用布尔查询,但过滤器会更快,更有效.
  4. 您的结果已被过滤.

请注意,有更多可能的方法与elasticsearch和Tire,例如:

  1. 您可以使用elasticsearch中的"过滤别名"功能,为每个用户设置"虚拟"索引,并在弹性搜索层上自动过滤.
  2. 您将此索引名称注入到Tire中的搜索中.