如何使用MongoMapper扩展对象的默认构造函数?

时间:2012-01-23 23:31:43

标签: ruby mongodb sinatra mongomapper

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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