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