太阳黑子搜索 - 忽略默认范围

时间:2016-08-02 08:50:08

标签: ruby-on-rails sunspot acts-as-tenant

我使用acts_as_tenant gem在我的模型中注入默认范围。

我也使用太阳黑子进行搜索:

Article.search do 
  with(:organization_id, ActsAsTenant.current_tenant.id)
  fulltext params[:search]
end

Article模型的范围是这样的,即使我没有在搜索中传递当前租户ID,我也只能得到正确的结果(只是总数会被关闭)。

现在,问题是:

如果在某些情况下我想忽略来自acts_as_tenant的默认范围,我该如何在Solr中执行此操作?这不起作用:

Article.unscoped.search do
  with(:organization_id, 999)
  fulltext params[:search]
end

它会生成错误的SQL:

Article Load (34.2ms)  SELECT `articles`.* FROM `articles` WHERE `articles`.`id` IN (3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32) AND `articles`.`organization_id` = 1

其中organization_id是当前租户的ID

TL; DR:在使用太阳黑子搜索时如何忽略默认范围?

1 个答案:

答案 0 :(得分:0)

当使用不涉及分配宝石的太阳黑子时,我仍未找到忽略默认范围的方法。但是我能够使用

ActsAsTenant.without_tenant do 
 RUN THE ENTIRE CODE HERE 
end

截至今天(2016年8月4日)此功能尚未发布,但您可use git repo directly