我想写一个方法,告诉我包含特定模块的每个类。它看起来像这样 -模块何时包含在运行在rails中的Ruby类中?
def Rating.rateable_objects
rateable_objects = []
ObjectSpace.each_object(Class) do |c|
next unless c.include? Rateable
rateable_objects << c
end
rateable_objects
end
其中“应课差饷租”是我的模块,我包括几种型号。
我发现的是,如果我在启动rails控制台或运行服务器后立即调用它,此方法返回[]。但是,如果我首先实例化其中一个消费模型的实例,它将在结果中返回该模型。
那么模块何时包含?我在后面的过程中猜测,比他的应用程序启动时。如果我在这个过程的早期无法获得这些信息,那么无论如何要完成这个任务?
我会认为它会在包含模块的模型被调用时加载。 – 2010-08-20 01:49:51