12
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
|
# File 'lib/dm-polymorphic.rb', line 12
def is_polymorphic(name, id_type=String)
self.class_eval " property :\"\#{name}_class\", Klass\n property :\"\#{name}_id\", \#{id_type}\n \n def \#{name}\n return nil if self.\#{name}_class.nil? || self.\#{name}_class == NilClass\n return nil if self.\#{name}_id.nil?\n if (self.\#{name}_class.class == Class)\n self.\#{name}_class.get(self.\#{name}_id)\n else\n klass = Kernel.const_get(self.\#{name}_class.to_s)\n if klass.ancestors.include? DataMapper::Resource\n klass.get(self.\#{name}_id)\n else\n nil\n end\n end\n end \n\n def \#{name}=(entity)\n self.\#{name}_class = entity.class\n self.\#{name}_id = entity.id\n end \n EOS\nend\n", __FILE__, __LINE__
|