Module: ForestAdminDatasourceMongoid::Parser::Relation

Included in:
Collection
Defined in:
lib/forest_admin_datasource_mongoid/parser/relation.rb

Instance Method Summary collapse

Instance Method Details

#get_polymorphic_types(relation_name) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/forest_admin_datasource_mongoid/parser/relation.rb', line 4

def get_polymorphic_types(relation_name)
  types = {}

  ObjectSpace.each_object(Class).select { |klass| klass < Mongoid::Document }.each do |model|
    if model.relations.any? { |_, relation| relation.options[:as] == relation_name.to_sym }
      primary_key = model.fields.keys.find { |key| model.fields[key].options[:as] == :id } || :_id
      types[model.name.gsub('::', '__')] = primary_key.to_s
    end
  end

  types
end