0

我有一个Identity模型,它有很多types(比如student,,teacher)。这些类型中的每一个都有许多在不同模块中定义的独特方法,以及许多共享方法。

我想根据即时类型包含某些模块以避免命名冲突。就像是:

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 回答