Sha256: fdc9320f0778cf2fc8fbe6f866b3eea3b2c3945c55f4d91f486b1f6f8ef4385c

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

module Dao
## CRUD support
#
  class Conducer
    module CRUD
      Code = proc do
        class << self
          def db
            Db.instance
          end

          def collection
            db[collection_name]
          end

          def all(*args)
            hashes = collection.all()
            hashes.map{|hash| new(hash)}
          end

          def find(id)
            hash = collection.find(id)
            new(hash) if hash
          end
        end

        def save
          run_callbacks :save do
            return(false) unless valid?
            id = self.class.collection.save(@attributes)
            @attributes.set(:id => id)
            true
          end
        ensure
          @new_record = false
        end

        def destroy
          id = self.id
          if id
            self.class.collection.destroy(id)
            @attributes.rm(:id)
          end
          id
        ensure
          @destroyed = true
        end
      end

      def CRUD.included(other)
        super
      ensure
        other.module_eval(&Code)
      end
    end
  end

## dsl for auto-crud
#
  class Conducer
    class << self
      def crud
        include(Conducer::CRUD)
      end
      alias_method('crud!', 'crud')
      alias_method('autocrud!', 'crud')
    end
  end
  #Conducer::send(:include, Conducer::CRUD)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dao-4.2.1 lib/dao/conducer/crud.rb