Sha256: 24a79d4796c5936172af9874565604f70fdad565da775e75dc35c95ee6418e49

Contents?: true

Size: 850 Bytes

Versions: 2

Compression:

Stored size: 850 Bytes

Contents

# encoding: utf-8
module Dynamoid #:nodoc:

  # This is the base module for all domain objects that need to be persisted to
  # the database as documents.
  module Document
    extend ActiveSupport::Concern
    include Dynamoid::Components

    attr_accessor :new_record
    alias :new_record? :new_record
    
    def initialize(attrs = {})
      @new_record = true
      @attributes ||= {}
      self.class.attributes.each {|att| write_attribute(att, attrs[att])}
    end
    
    def persisted?
      !new_record?
    end
    
    def ==(other)
      other.respond_to?(:id) && other.id == self.id
    end
    
    module ClassMethods
      def create(attrs = {})
        obj = self.new(attrs)
        obj.save && obj.new_record = false
        obj
      end
      
      def build(attrs = {})
        self.new(attrs)
      end
    end
  end
  
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dynamoid-0.1.0 lib/dynamoid/document.rb
dynamoid-0.0.7 lib/dynamoid/document.rb