MongoMapper动态EmbeddedDocument具有自定义用户数据

时间:2011-11-14 04:27:43

标签: ruby-on-rails mongodb mongomapper

我有一个名为LogInfo的MongoMapper模型,它已经定义了许多字段(:user_id,:user_key,:message等)

但是,我也希望用户将自己的JSON对象嵌入为EmbeddedDocument。

有没有办法使用匿名对象在MongoMapper中创建自定义对象?我不得不求助于原生的Ruby驱动程序吗?最终的对象看起来像这样:

{
    user_id: 393,
    user_key: "kdIekHG32Je",
    message: "Application error",
    custom_data: {
        browser: "Firefox 8.0",
        location: {
             lat: 34.323,
             lon: -14.091
        }
    }
}

其中custom_data字段是app用户可以随机提供的内容。

1 个答案:

答案 0 :(得分:0)

不确定。您不必使用Ruby驱动程序。

MongoMapper通过调用:

将对象转换为MongoDB表示形式
ObjectClass.to_mongo(object_instance)

已经为一堆标准类定义了to_mongo方法,您也可以为自己的类定义它。有关自定义类型文档的所有已定义to_mongo的类和lib/mongo_mapper/extensions,请参阅http://mongomapper.com/documentation/types.html

但是,如果你满足于让你的用户只给你一个哈希,它就会起作用。

class LogEntry
  include MongoMapper::Document
  key :custom_data, Hash
end