Sha256: 84eb763e8e66f48de6c31ed76b318265a9766ecf2038633bd54501ccf1729c64

Contents?: true

Size: 725 Bytes

Versions: 1

Compression:

Stored size: 725 Bytes

Contents

class InlineHasManyProperty
  attr_accessor :name
  
  def initialize(owner_clazz, name, options = {})
    @name = name
    getter =  <<-GETTER
      def #{name}
        @#{name} ||= CouchPotato::Persistence::InlineCollection.new(#{item_class_name})
      end
    GETTER
    owner_clazz.class_eval getter
  end
  
  def build(object, json)
    object.send("#{name}").clear
    json[name.to_s].each do |item|
      item.delete 'ruby_class'
      object.send("#{name}").build item
    end
  end
  
  def save(object)
    
  end
  
  def serialize(json, object)
    json[name.to_s] = object.send(name)
  end
  
  def destroy(object)
    
  end
  
  private
  
  def item_class_name
    @name.to_s.singularize.camelcase
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
langalex-couch_potato-0.1 lib/couch_potato/persistence/inline_has_many_property.rb