0

ActionController::Base クラスの継承メソッドを実装しようとしています。私の目的は、ApplicationController のような ActionController::Base から継承するクラスのメソッドを呼び出して、それらに特定のモジュールを含めることです。現時点で私のコードは次のようになります。

module MyModule
 def inherited(child)
 end
 def my_test_method()
 end
end
ActionController::Base.send(:extend, MyModule)

ActionController::Base.methods.include? 'my_test_method'
=> true
ActionController::Base.methods.include? 'inherited'
=> false

コードは、プラグインの init ファイルから呼び出されます。

4

1 に答える 1

0

inherited は Class のクラスメソッドです。子クラスが定義されているときに動作を追加するために直接上書きできます。モジュールを拡張してこれを行う方法はわかりませんが、これは同じ結果を達成するはずです:

class ActionController::Base
  def self.inherited(child)
    puts "child created: #{child}"
  end
end

class ChildClass < ActionController::Base
end

出力が得られます:

child created: ChildClass
于 2012-07-05T07:41:50.983 に答える