我在我的 Rails 应用程序中使用了一些持久的轮胎模型。搜索一直工作正常,使用Tire.search ['index1','index2'], :load => true do ...
但我现在创建了一个新的索引和模型,尝试将其包含在搜索中并访问其结果时出现以下错误:
undefined method `detect' for #<AuthoredHistory:0x000001013d6a88>
我看到它来自 Tyre::Results::Collection#results,在最后一行:
@response['hits']['hits'].map { |item| records[item['_type']].detect { |record| record.id.to_s == item['_id'].to_s } }
出于某种原因records[item['_type']]
,我的其他模型返回了一个 Tire::Results::Collection 对象,但是对于新类,它返回了一个 AuthoredHistory 对象,这是我的实际模型类。我在 gem 的 github 页面上看到了一些关于这个的东西,但是我没有对 Tire.configuration.wrapper 做任何事情。我在所有索引模型中都包含持久性、搜索和回调模块。
我错过了什么吗?有人可以指出我正确的方向吗?(karmi,我希望你能在这里救我!)
[更新]
现在我到了某个地方......当结果只返回来自特定索引的 1 个结果时发生错误。如果一个索引有 2 个或更多结果,它会将其包装在 Tire::Results::Collection 中。现在要找破解...
[再次更新]
哈克解决方案找到了!看看下面的答案...