立即访问结果时方法的不同行为

时间:2013-01-22 07:01:35

标签: ruby-on-rails ruby mapreduce mongoid

我在一个我从一个规范调用的类上有一个类方法Juxtaposition.generate_for(position)。该方法设置地图缩小并将其称为map_reduce(map, reduce).out(merge: "juxtapositions")

位置变量在it块之前的let中定义。

执行时,如果我只是调用上面的函数(实际上只调用与位置相关的数据的地图减少),那么下面的测试就会失败:

Juxtaposition.count.should eq 1
Juxtaposition.first.value.should eq values

但是,如果我打电话

Juxtaposition.generate_for(positions).first["value"].should eq values
在两次测试之前,他们都通过了。当我使用pry并从那里调用generate_for方法时,上述两个测试也会通过。

我应该知道mongoid中有一些奇怪的地图缩小行为吗?或者,是否有某种方法可以将结果强制用于以后的查询。

1 个答案:

答案 0 :(得分:1)

解决方案很简单。我只需要确保在调用map来调用find。

更具体地说:

map_reduce(map, reduce).out(merge: "juxtapositions").first

map_reduce(map, reduce).out(merge: "juxtapositions").to_a

如果没有to_a或者第一个实际的地图缩减似乎没有执行,即使它意味着存储在另一个集合中。