module Ardm::Property::Discriminator::Model
Public Instance Methods
inherited(model)
click to toggle source
Calls superclass method
# File lib/ardm/property/discriminator.rb, line 33 def inherited(model) super # setup self.descendants #set_discriminator_scope_for(model) end
new(*args, &block)
click to toggle source
Calls superclass method
# File lib/ardm/property/discriminator.rb, line 38 def new(*args, &block) if args.size == 1 && args.first.kind_of?(Hash) discriminator = properties.discriminator if discriminator_value = args.first[discriminator.name] model = discriminator.typecast(discriminator_value) if model.kind_of?(Model) && !model.equal?(self) return model.new(*args, &block) end end end super end
Private Instance Methods
set_discriminator_scope_for(model)
click to toggle source
# File lib/ardm/property/discriminator.rb, line 56 def set_discriminator_scope_for(model) discriminator = self.properties.discriminator model.scoped.with_default_scope.update_all(discriminator.field => model.descendants.dup << model) rescue ::ActiveRecord::ConnectionNotEstablished => e puts "Error was raised but it seems to be an ActiveRecord 3.2 error, fixed in 4:\n#{e}" end