根据即时类型包含模块

时间:2013-07-02 01:21:29

标签: ruby-on-rails module

我有Identity模型,其中包含许多types(例如studentteacher)。这些类型中的每一种都具有在不同模块中定义的许多唯一方法,以及许多共享方法。

我想根据即时类型添加某些模块,以避免命名冲突。类似的东西:

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

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以在初始化挂钩后使用以加载正确的模块。

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

但您必须确保始终使用类型初始化对象以避免意外结果。