Rails,使用MongoMapper存储自定义类:无法将对象序列化为BSON

时间:2011-08-01 12:25:37

标签: ruby-on-rails serialization object mongomapper bson

我在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}

我不知道为什么它不适用于我的情况。如果你们中的任何一个人有了一个想法,那么如果你帮助我会很棒。非常感谢你提前!

亲切的问候, 塞巴斯蒂安

1 个答案:

答案 0 :(得分:4)

您的密钥需要显式声明为签名类型:

class Doc
  include MongoMapper::Document
  key :signature, Signature
end