【问题标题】:MongoMapper dynamic EmbeddedDocument with custom user data带有自定义用户数据的 MongoMapper 动态 EmbeddedDocument
【发布时间】:2011-11-14 04:27:42
【问题描述】:

我有一个名为 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 字段是应用用户可以提供的随机值。

【问题讨论】:

    标签: ruby-on-rails mongodb mongomapper


    【解决方案1】:

    当然。您不必求助于 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多