Как я могу расширить конструктор по умолчанию для объекта, используя MongoMapper? - PullRequest
1 голос
/ 24 января 2012

Я только начал использовать MongoMapper для управления вложенными моделями в приложении Sinatra.В этом конкретном случае мне просто нужно проверить одно из полей при инициализации EmbeddedDocument и добавить начальную косую черту, если ее там еще нет.

Моя идея заключалась в том, чтобы написать проверку в методе initializeэто позаботится об этом, за исключением того, что написание моей собственной инициализации полностью переопределит значение по умолчанию, тогда как я хочу использовать значение по умолчанию с добавленным моим собственным кодом.Я пытался найти некоторые ресурсы по расширению конструкторов MongoMappers, используя super или что-то подобное, но я не нашел много.

Даже если это не лучший способ решить мою текущую проблему (я хотел бы знать, как расширить конструктор MongoMapper по умолчанию, просто для дальнейшего использования.Заранее спасибо.

Редактировать: Я нашел документы по проверке MongoMapper, которые решают мою текущую проблему с косой чертой.http://mongomapper.com/documentation/plugins/validations.html

Тем не менее, все еще интересует расширение конструктора ...

1 Ответ

1 голос
/ 24 января 2012

Метод initialize, который MongoMapper предоставляет вам, находится в модуле, а не определен непосредственно в вашем классе.Это означает, что если вы определите свой метод initialize, метод MM будет по-прежнему доступен для вас с super.

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

Внутренние плагины MongoMapper широко используют этот шаблон.Каждый плагин устанавливает свои собственные проблемы при инициализации, а затем вызывает super.

...