0

mongoid で検索するために Tire/elasticsearch を使用しています。ドキュメントのインデックスを更新すると、undefined method 'as_document' というエラーが発生します。

@document.tire.update_index

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

モンゴイドメソッド「as_document」を調査したところ、単一のオブジェクトしか受け入れないことがわかりました。ドキュメント オブジェクトにコメントがない場合、「@document.as_document」は単一のオブジェクトを返し、エラーはありませんが、ドキュメントにコメントがある場合、「@document.as_document」は配列を返すようで、「undefined method」というエラーを返します。 #" の場合は「as_document」。

@document にコメントがある場合、ハッシュの配列を返すようです。

  1. 配列 (Array:0x10a40f870) を返す方法はありますか?

  2. @document (配列のように見える) を単一のオブジェクトに変換して、as_document を通過できるようにするにはどうすればよいですか?

  3. 「undefined method as_document」が表示されるのはなぜですか

コメントへの has_many 関係を持つドキュメント モデルがあります。

レール: 3.2.12、モンゴイド: 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 に答える