假设,我们有一个表Commentable,它有commentable_id
和commentable_type
,它们本质上是多态的。基于此,我们如何根据关联获得所有关联表的列表/所有可能的commentable_type
?
检查您的模型是否存在comments
关系。我假设每个值得称赞的模型都有许多comments
。
ApplicationRecord.descendants.select { |klass| klass.reflections['comments'] }
或者,您可以选择一个不同的字段Commentable.distinct(:commentable_type).pluck(:commentable_type)
。此查询返回一个类型数组(作为字符串(。每种类型都是一个模型名称,知道它们,就可以推断出表名称。