Class: DataMapper::Types::Discriminator

Public Visibility

Public Class Method Summary

bind(property)

Public Class Methods Inherited from DataMapper::Type

configure, dump, inherited, load, options, primitive

Public Instance Methods Inherited from Object

validatable?

Public Class Method Details

bind

public bind(property)
[View source]


7
8
9
10
11
12
13
14
# File 'dm-core/lib/dm-core/types/discriminator.rb', line 7

def self.bind(property)
  model = property.model

  model.class_eval "def self.inheritance_class_names\n@inheritance_class_names ||= []\nend\n\nafter_class_method :inherited, :propagate_inheritance_class_name\n\ndef self.propagate_inheritance_class_name(target)\ninheritance_class_names << target.name\nsuperclass.send(:propagate_inheritance_class_name,target) if superclass.respond_to?(:propagate_inheritance_class_name)\nend\n"

  model.send(:scope_stack) << DataMapper::Query.new(property.repository, model, property.name => (model.inheritance_class_names << model.name))

end