Sha256: 04894d33d684895daa80f04af9b3e605ac35aa8141c6d4a06b4fe46e6b219ce4

Contents?: true

Size: 834 Bytes

Versions: 3

Compression:

Stored size: 834 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 :persisted? :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 ==(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

3 entries across 3 versions & 1 rubygems

Version Path
dynamoid-0.0.6 lib/dynamoid/document.rb
dynamoid-0.0.5 lib/dynamoid/document.rb
dynamoid-0.0.4 lib/dynamoid/document.rb