我在Rails 3.0.9中使用MongoMapper 0.9.1,当我尝试将自定义类的对象保存到数据库中时,它会引发以下错误:
BSON :: InvalidDocument(无法将类Signature的对象序列化为BSON。)
我的应用程序将允许用户签署文档,这些签名应保存在自定义类中。我只是在Doc-class之前声明了Signature-class,它将存储它:
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}
我不知道为什么它不适用于我的情况。如果你们中的任何一个人有了一个想法,那么如果你帮助我会很棒。非常感谢你提前!
亲切的问候, 塞巴斯蒂安
答案 0 :(得分:4)
您的密钥需要显式声明为签名类型:
class Doc
include MongoMapper::Document
key :signature, Signature
end