0

多くのIdentityモデルがありますtypes(たとえば、studentteacher)。これらの各タイプには、さまざまなモジュールで定義された多くの固有のメソッドと、多くの共有メソッドがあります。

名前の競合を避けるために、インスタント型に応じて特定のモジュールを含めたいと思います。何かのようなもの:

class Identity < ActiveRecord::Base
 if instant.type =='student'
   include Student
 if instant.type == 'teacher'
   include Teacher
 end
end

どうすればいいですか?

4

1 に答える 1

1

after initialize フックを使用して、正しいモジュールをロードできます。

def after_initialize
 if self.type =='student'
   extend Student
 else if self.type == 'teacher'
   extend Teacher
 end
end

ただし、予期しない結果を避けるために、常にオブジェクトを型で初期化する必要があります。

于 2013-07-02T02:00:25.033 に答える