Rails轮胎宝石过滤结果在控制器中

时间:2013-10-12 16:13:04

标签: ruby-on-rails search filter gem tire

是否可以在控制器中使用elasticsearch轮胎gem过滤查询? 我有一个产品模型,它有一个self.search方法,它返回一个结果数组, 但我想在某些情况下过滤控制器中的结果。

例如:当current_user.location是'伦敦'时,我只想在伦敦展示产品。 有可能这样做吗?

if current_user.location == 'london'
@products = Product.search(params).results.filter('location:london')
end

1 个答案:

答案 0 :(得分:0)

在事实之后尝试过滤对象数组会非常低效和缓慢。这也会使得很难正确地进行分页。你最好首先搜索和过滤(以便ElasticSearch正在开展工作),然后调用结果。

Product.search(params).filter(:terms, :location => ['london']).results

https://github.com/karmi/retire#usage