1

Rails 3.0.9 で MongoMapper 0.9.1 を使用していますが、カスタム クラスのオブジェクトを DB に保存しようとすると、次のエラーがスローされます。

BSON::InvalidDocument (クラス Signature のオブジェクトを BSON にシリアライズできません。)

私のアプリケーションでは、ユーザーがドキュメントに署名できるようになり、これらの署名はカスタム クラスに保存する必要があります。それを格納する Doc クラスの前に Signature クラスを宣言しただけです。

class Signature
   @value
   @date
   @user
   def self.to_mongo(value)
      value.to_a
   end
   def self.from_mongo(value)
      Signature.new(value || [])
   end
end

class Doc
   # ...

to_mongo または from_mongo メソッドをコメントアウトしても、コントローラーから呼び出してテストしたい場合は、常に上記の例外がスローされます。

 doc = Doc.new {:signature => Signature.new}

私の場合、なぜそれが機能しないのかわかりません。あなたの誰かがアイデアを持っているなら、あなたが私を助けてくれるならそれは素晴らしいことです. 事前にどうもありがとうございました!

よろしく、セバスチャン

4

1 に答える 1

4

キーは Signature タイプとして明示的に宣言する必要があります。

class Doc
  include MongoMapper::Document
  key :signature, Signature
end
于 2011-08-02T13:38:26.500 に答える