17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/mongoid_embedded_errors_master.rb', line 17
def errors_with_embedded_errors
errs = errors_without_embedded_errors
self.embedded_relations.each do |name, metadata|
if errs[name]
errs.delete(name.to_sym)
relations = self.send(name)
if relations.is_a? Array
relations.each_with_index do |rel, i|
if rel.errors.any?
rel.errors.messages.each do |k, v|
key = "#{name}.#{i}.#{k}".to_sym
errs.delete(key)
errs[key] = v
errs[key].flatten!
end
end
end
elsif relations
if relations.errors.any?
relations.errors.messages.each do |k, v|
key = "#{name}.#{k}".to_sym
sub_rel = relations.send(k)
if sub_rel.respond_to?(:errors) && sub_rel.errors.any?
sub_rel.errors.messages.each do |sub_k, sub_v|
sub_key = "#{name}.#{k}.#{sub_k}".to_sym
errs.delete(sub_key)
errs[sub_key] = sub_v
errs[sub_key].flatten!
end
else
errs.delete(key)
errs[key] = v
errs[key].flatten!
end
end
end
end
end
end
return errs
end
|