【问题标题】:How can I extend the default constructor for an object using MongoMapper?如何使用 MongoMapper 扩展对象的默认构造函数?
【发布时间】:2012-01-23 23:31:42
【问题描述】:

我刚开始使用 MongoMapper 来管理 Sinatra 应用程序中的嵌套模型。在这种特殊情况下,我只需要在初始化 EmbeddedDocument 时检查其中一个字段,如果还没有,则添加一个前导斜杠。

我的想法是在初始化方法中编写一个检查来处理它,除了编写我自己的初始化将完全覆盖默认值,而我想使用添加我自己的代码的默认值。我一直在尝试寻找一些关于扩展 MongoMappers 构造函数、使用 super 或类似的资源,但我没有找到太多。

即使这不是解决我当前问题的最佳方法(确保字符串字段上的前导斜杠),我也想知道如何扩展 MongoMapper 的默认构造函数,以供将来参考。提前致谢。

编辑:我发现 MongoMapper Validation 文档解决了我当前的斜线问题。 http://mongomapper.com/documentation/plugins/validations.html

仍然对构造函数扩展感到好奇...

【问题讨论】:

    标签: ruby mongodb sinatra mongomapper


    【解决方案1】:

    MongoMapper 为您提供的initialize 方法位于模块中,而不是直接在您的类上定义。这意味着如果您定义了initialize 方法,那么您仍然可以使用super 的MM 方法。

    def initialize(*args)
      super
      # do your own stuff here
    end
    

    MongoMapper 的内部插件广泛使用该模式。每个插件在初始化时设置自己的关注点,然后调用super

    【讨论】:

      猜你喜欢
      • 2015-05-16
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-03
      • 1970-01-01
      相关资源
      最近更新 更多