我有一个名为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用户可以随机提供的内容。
答案 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