12

と思った

class ApplicationController < ActionController::Base
  include Foo

「ミックスイン」を追加することです。これにより、FooモジュールのすべてのメソッドがApplicationControllerのメソッドとして扱われます。

しかし今、私は次のようなコードを見ています

include Bar

class ApplicationController < ActionController::Base
  include Foo

それで、なぜそれは外にあるのApplicationControllerですか?それを中に入れるというより一般的な使用法とはどう違うのApplicationControllerですか?

4

1 に答える 1

19

はい、クラス内ではそのクラスの祖先がinclude Foo追加されるため、すべてのインスタンスメソッドをそれらのクラスのインスタンスで使用できるようになります。FooFoo

クラス定義の外では、の祖先にinclude Foo追加されます。つまり、クラスの定義内で行ったのと同じです。これを行う用途は、すべてのインスタンスメソッドがどこでも利用できるようになることです。FooObjectinclude FooObjectFoo

于 2011-03-01T23:02:58.640 に答える