class Relaxo::Model::Properties::Polymorphic

Public Class Methods

[](*klasses) click to toggle source
# File lib/relaxo/model/properties/composite.rb, line 26
def self.[] *klasses
        self.new(klasses)
end
new(klasses) click to toggle source
# File lib/relaxo/model/properties/composite.rb, line 30
def initialize(klasses)
        @klasses = klasses
        @lookup = nil
end

Public Instance Methods

convert_from_primative(dataset, path) click to toggle source
# File lib/relaxo/model/properties/composite.rb, line 53
def convert_from_primative(dataset, path)
        type, _, _ = path.rpartition('/')
        
        klass = lookup(type)
        
        klass.fetch(dataset, path)
end
convert_to_primative(document) click to toggle source
# File lib/relaxo/model/properties/composite.rb, line 47
def convert_to_primative(document)
        raise ArgumentError.new("Document must be saved before adding to relationship") unless document.persisted?
        
        document.paths.first
end
lookup(type) click to toggle source
# File lib/relaxo/model/properties/composite.rb, line 35
def lookup(type)
        unless @lookup
                @lookup = {}
                
                @klasses.each do |klass|
                        @lookup[klass.type] = klass
                end
        end
        
        @lookup[type]
end