0

我正在使用轮胎/弹性搜索与 mongoid 进行搜索,当我更新我的文档的索引时,我收到错误未定义的方法“as_document”:

@document.tire.update_index

undefined method `as_document' for #<Array:0x10a40f870>

我研究了 mongoid 方法“as_document”,发现它只接受单个对象。当我的文档对象没有注释时,“@document.as_document”返回单个对象并且没有错误,但是当文档有注释时,“@document.as_document”似乎返回一个数组并返回错误“未定义的方法” 'as_document' 用于 #"。

似乎当@document 有评论时,它会返回一个哈希数组。

  1. 有什么方法可以返回数组 (Array:0x10a40f870) 以便我可以看到它来自哪里?

  2. 如何将@document(似乎是一个数组)转换回单个对象,以便它可以通过 as_document?

  3. 为什么我得到一个“未定义的方法 as_document”

我有一个与评论有 has_many 关系的 Document 模型

导轨:3.2.12,Mongoid:3.1.4

4

1 回答 1

0

1.记录器是您的朋友。我建议在您的逻辑存在的任何地方打印它,这样您就可以准确地看到您返回的数组。

像这样的东西:

# your logic here
@your_array = ..set
logger.debug "MY ARRAY: #{@your_array}"

如果您可以查看 Webrick 或您拥有的任何设置,这至少可以让您很好地了解您正在处理的内容。

2+3。Mongoid 将 Documents 存储为一个哈希数组,所以这就是您可能正在查看的内容(但我还没有看到确切的代码)。

我不相信您的文档定义有任何问题,但我会更好地查看 Mongoid docs 1的 [Relations Sections]

更具体地说,问题 2: 查看操作部分。

于 2013-08-09T05:42:15.140 回答