我刚开始使用MongoMapper来管理Sinatra应用程序中的嵌套模型。在这种特殊情况下,我只需要在初始化EmbeddedDocument时检查其中一个字段,如果还没有,则添加一个前导斜杠。
我的想法是在初始化方法中编写一个检查来处理它,除了编写我自己的初始化将完全覆盖默认值,而我想使用默认添加我自己的代码。我一直试图找到一些关于扩展MongoMappers构造函数的资源,使用super或类似的东西,但我找不到太多。
即使这不是解决当前问题的最佳方法(确保String字段的前导斜杠),我也想知道如何扩展MongoMapper的默认构造函数,仅供将来参考。提前谢谢。
编辑:我发现MongoMapper验证文档解决了我当前的主要斜杠问题。 http://mongomapper.com/documentation/plugins/validations.html
仍然对构造函数扩展感到好奇......
答案 0 :(得分:1)
MongoMapper为您提供的initialize
方法位于一个模块中,而不是直接在您的类上定义。这意味着,如果您定义了initialize
方法,则super
仍然可以使用MM的方法。
def initialize(*args)
super
# do your own stuff here
end
MongoMapper的内部插件广泛使用该模式。每个插件都会在初始化时设置自己的问题,然后调用super
。