轮胎过滤不起作用?

时间:2013-06-05 18:00:24

标签: ruby tire

所以,我有一个叫做筹款人的课程:

class Fundraiser    
  def search!
    search = Tire::Search::Search.new('fundraisers')
    search.query { all }
    search.filter :range, {id: {gt: 1}}
    search.results
    binding.pry
  end
end

当我撬开它并查看“搜索”变量时,我没有得到任何结果

[1] pry()> search
=> #<Tire::Search::Search:0x007fb3d9d13938
 @filters=[{:range=>{:id=>{:gt=>1}}}],
 @indices=["fundraisers"],
 @options={},
 @path="/fundraisers/_search",
 @types=[]>

即使我有两个ID高于“1”的筹款人

[2] pry()> Fundraiser.all.map(&:id)
=> [1, 2, 3]

我做错了什么?我已经用我能想到的每一种方式重写了这一点。另外值得注意的是,如果我做了类似的过滤器,那么“created_at”是gt / lt时间戳我得不到任何结果。

更新

我添加了搜索调用的queryresults部分,但我还没有得到结果......

=> #<Tire::Results::Collection:0x007f92f3302b58
 @facets=nil,
 @max_score=0.0,
 @options={},
 @response=
  {"took"=>0,
   "timed_out"=>false,
   "_shards"=>{"total"=>5, "successful"=>5, "failed"=>0},
   "hits"=>{"total"=>0, "max_score"=>nil, "hits"=>[]}},
 @time=0,
 @total=0,
 @wrapper=Tire::Results::Item>

1 个答案:

答案 0 :(得分:0)

您已创建搜索但尚未执行(通过调用.results

此外,我很确定你必须定义一个查询,即使它只是

search.query { all }

您可能还希望考虑使用过滤后的查询,但在顶层添加过滤器也可以使用。