3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/custom_fields/extensions/active_support.rb', line 3
def constantize_with_custom_fields
begin
constantize_without_custom_fields
rescue NameError => exception
if self =~ /(.*)([0-9a-fA-F]{24})$/
base = $1.constantize
if base.with_custom_fields?
relation = base.relations.values.detect { |metadata| metadata[:custom_fields_parent_klass] == true }
if relation && parent_instance = relation.klass.find($2)
return parent_instance.klass_with_custom_fields(relation.inverse_of)
end
end
end
raise exception
end
end
|