2012-01-23 6 views
1

Sinatraアプリでネストされたモデルを管理するためにMongoMapperを使い始めました。この特定のケースでは、EmbeddedDocumentが初期化されるときにフィールドの1つをチェックするだけで、先にスラッシュがない場合はスラッシュを追加する必要があります。MongoMapperを使用してオブジェクトのデフォルトコンストラクタを拡張するにはどうすればよいですか?

私の考えは、自分の初期化を書くことがデフォルトを完全に上書きするのに対し、自分のコードを追加してデフォルトを使いたいという点を除けば、それを世話するinitializeメソッドのチェックを書くことでした。私はMongoMappersのコンストラクタを拡張する上でいくつかのリソースを見つけようとしていました。スーパーなどを使用していましたが、それほど多くは見つかりませんでした。

私の現在の問題を解決する最善の方法ではない(たとえStringフィールドのスラッシュを確実にする)場合でも、MongoMapperのデフォルトのコンストラクタを拡張する方法を知りたいと思います。前もって感謝します。

編集:現在のスラッシュの問題を解決するMongoMapper Validationドキュメントが見つかりました。それでもコンストラクタ延長好奇心しかし...あなたを与えるMongoMapper

答えて

1

initialize方法はモジュールで、あなたのクラスに直接定義されていない http://mongomapper.com/documentation/plugins/validations.html

。つまり、initializeメソッドを定義すると、MMのメソッドはsuperで引き続き使用できます。

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

MongoMapperの内部プラグインは、このパターンを広く使用します。各プラグインは、初期化時に独自の懸念事項を設定し、superを呼び出します。

関連する問題