我使用的是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