Sha256: 936d0f4fb118156f8d13525265a8994dd09a3a39cbecf2ab592c749d5f81f6aa
Contents?: true
Size: 1.35 KB
Versions: 3
Compression:
Stored size: 1.35 KB
Contents
require "disposable/expose" require "disposable/composition" module Disposable class Twin module Expose module ClassMethods def expose_class @expose_class ||= Class.new(Disposable::Expose).from(representer_class) end end # ClassMethods. def self.included(base) base.extend(ClassMethods) end module Initialize def mapper_for(*args) self.class.expose_class.new(*args) end end include Initialize end module Composition module ClassMethods def expose_class @expose_class ||= Class.new(Disposable::Composition).from(representer_class) end end def self.included(base) base.send(:include, Expose::Initialize) base.extend(ClassMethods) end def to_nested_hash(*) hash = {} @model.each do |name, model| # TODO: provide list of composee attributes in Composition. part_properties = self.class.representer_class.representable_attrs.find_all { |dfn| dfn[:on] == name }.collect(&:name).collect(&:to_sym) hash[name] = self.class.nested_hash_representer.new(self).to_hash(include: part_properties) end hash end private def save_model mapper.each(&:save) # goes through all models in Composition. end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
disposable-0.1.2 | lib/disposable/twin/composition.rb |
disposable-0.1.1 | lib/disposable/twin/composition.rb |
disposable-0.1.0 | lib/disposable/twin/composition.rb |