Mongoid将对象作为数组返回

时间:2013-08-09 02:49:24

标签: ruby-on-rails mongoid tire

我使用tire / elasticsearch进行mongoid搜索,当我更新我的文档索引时,我收到错误未定义方法'as_document':

@document.tire.update_index

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

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

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

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

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

  3. 为什么我会收到'未定义的方法as_document'

  4. 我有一个与评论具有has_many关系的文档模型

    Rails:3.2.12, Mongoid:3.1.4

1 个答案:

答案 0 :(得分:0)

1。记录器是你的同性恋。我建议在你的逻辑存在的地方打印它,这样你就可以确切地看到你要返回的数组。

这样的事情:

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

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

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

我不相信您的文档定义有任何问题,但我会更好地了解Mongoid文档的{Relations Sections] 1

更具体地针对问题2: 查看操作部分。