如何查找包含模块的所有类

时间:2014-10-03 17:57:40

标签: ruby-on-rails ruby

我有一个名为Nameable的模块和一些包含此模块的模型。

有没有办法知道哪个模型(类)包含了这个模块?

2 个答案:

答案 0 :(得分:1)

好吧,我已经弄清楚如何找到所有类的名称。

Module.constants.select { |c| (eval c.to_s).is_a?(Class) && (eval c.to_s).include?(Nameable)}

不知道这是否是最佳方式。

答案 1 :(得分:1)

另一种方法是:

ActiveRecord::Base.descendants.map { |model| model.include?(Nameable) }

根据模型是否包含true模块,这将为您提供值falseNameable的列表。

您可以操纵map的正文以返回您喜欢的数据(我无法从您的问题中获取)。