# File lib/dm-core/property/discriminator.rb, line 15 15: def inherited(model) 16: super # setup self.descendants 17: set_discriminator_scope_for(model) 18: end
# File lib/dm-core/property/discriminator.rb, line 20 20: def new(*args, &block) 21: if args.size == 1 && args.first.kind_of?(Hash) 22: discriminator = properties(repository_name).discriminator 23: 24: if discriminator_value = args.first[discriminator.name] 25: model = discriminator.typecast_to_primitive(discriminator_value) 26: 27: if model.kind_of?(Model) && !model.equal?(self) 28: return model.new(*args, &block) 29: end 30: end 31: end 32: 33: super 34: end
# File lib/dm-core/property/discriminator.rb, line 38 38: def set_discriminator_scope_for(model) 39: discriminator = self.properties.discriminator 40: default_scope = model.default_scope(discriminator.repository_name) 41: default_scope.update(discriminator.name => model.descendants.dup << model) 42: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.