13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/mongoid/max/denormalize.rb', line 13
def denormalize(relation, *fields)
options = fields.
meta = self.relations[relation.to_s]
raise ConfigError.new("Unknown relation", self, relation) if meta.nil?
inverse_meta = meta.klass.relations[meta.inverse.to_s]
raise ConfigError.new("Unknown inverse relation", self, relation) if inverse_meta.nil?
if meta.relation == Mongoid::Relations::Referenced::In && inverse_meta.relation == Mongoid::Relations::Referenced::Many
OneToMany.new(self, meta, inverse_meta, fields, options).attach
elsif meta.relation == Mongoid::Relations::Referenced::Many && inverse_meta.relation == Mongoid::Relations::Referenced::In
ManyToOne.new(self, meta, inverse_meta, fields, options).attach
else
raise ConfigError.new("Relation not supported", self, relation)
end
end
|