gpt4 book ai didi

ruby-on-rails - 轮胎 gem : undefined method `detect'

转载 作者:行者123 更新时间:2023-12-02 23:41:51 25 4
gpt4 key购买 nike

我在我的 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 中。现在要找破解...

[再次更新]

哈克解决方案找到了!看看下面的答案...

最佳答案

我认为您在检测之前缺少 map 的花括号。应该是这样的:

@response['hits']['hits'].map { |item| records[item['_type']] }.detect { |record| record.id.to_s == item['_id'].to_s }

我不太了解代码库,无法确定这一点,但我认为 records[item['_type']]将返回其中一个 AuthoredHistory没有 detect 的对象方法。
detect方法用于 Enumerable Ruby 中的集合,这是一种对象, map返回(它将返回一个 Array )对象。因此,花括号的位置错误。

关于ruby-on-rails - 轮胎 gem : undefined method `detect' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10592005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com