ruby on rails-Sunspot搜索-忽略默认范围



我使用的是acts_as_tenant-gem,它在我的模型中注入默认作用域。

我也使用Sunspot进行搜索,比如:

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:使用Sunspot搜索时,如何忽略默认范围

在使用不涉及分叉gem的spool时,我仍然未能找到忽略默认范围的方法。然而,我能够使用

ActsAsTenant.without_tenant do 
 RUN THE ENTIRE CODE HERE 
end

截至今天(2016年8月4日),此功能尚未发布,但您可以直接使用git-reo

相关内容

  • 没有找到相关文章

最新更新