0

同じモジュールを含むいくつかのクラスを取得しました。コード内の 1 か所でモジュールのメソッドの 1 つをオーバーライドしたいと考えています。これを行う方法?

私は試した

module [Module_name]
  def [method_to_override]

それをレールの自動ロードパスに追加しますが、成功しません

4

1 に答える 1

0

モジュールを mixin として使用している場合は、クラスでメソッドを再定義できます。クラス レベルで定義されたメソッドは、呼び出されたときに優先されます。この場合、ミックスインとしてのモジュールは単にスーパークラスとして動作します。

モジュールを名前空間として使用している場合、コードを動的に再定義する方法があるかどうかはわかりません。おそらく、名前空間付きのモジュールをその場で開いて、メソッドの新しいコードを含めるとうまくいくでしょう。私は前にこれを試したことがない。

いくつかの参考資料

于 2012-11-01T11:01:19.877 に答える