MongoMapper 0.9.1をRails 3.0.9で使用しています。カスタムクラスのオブジェクトをDBに保存しようとすると次のエラーが発生します。 :MongoMapperでカスタムクラスを保存しているレール:BSONにオブジェクトをシリアル化できません
BSON :: InvalidDocument(BSONにクラス署名のオブジェクトをシリアル化することはできません。)
私のアプリケーションは、文書に署名するために、ユーザーが有効になりますし、これらのシグネチャは、カスタムクラスに保存する必要があります。私は単にそれを保存しようとしているドキュメントクラスの前に署名クラスを宣言した:
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}
私はなぜ私の場合にはうまくいかないのか分かりません。あなたの誰かがアイデアを持っているなら、あなたが私を助けてくれたら素晴らしいだろう。事前にどうもありがとうございました!
敬具、 セバスチャン
はこの作品、どうもありがとうございました!過去に私はキーを宣言しなかった。なぜなら、保存したい属性は動的なものだからだ。私が必要としていたすべては、単に「自己.attributename」と宣言しました。動的キーを設定できるようにするために、私は今、それぞれの属性に対して 'self.class.key attributename、Signature'を呼び出しています。これはかわいい壁の作品です。再度、感謝します! (: – YMMD