Sha256: 355c52ff71deb4c938b8a249aacf0459a5369377c0215e8f0f8e7f89a33ca5ca

Contents?: true

Size: 967 Bytes

Versions: 2

Compression:

Stored size: 967 Bytes

Contents

module Panda
  module Builders

    def self.included(base)
      base.extend(ClassMethods)
    end

    module ClassMethods

      def create(attributes={})
       resource = build_resource(attributes)
       yield resource if block_given?

       resource.create
       resource
      end

      def create!(attributes={})
        resource = build_resource(attributes)
        yield resource if block_given?

        resource.create!
        resource
      end

      private
      
      def build_resource(attributes)
        Panda::const_get("#{sti_name}").new(attributes.merge(:cloud_id => cloud.id))
      end
    end

    def create
      raise "Can't create attribute. Already have an id=#{attributes['id']}" if attributes['id']
      uri = replace_pattern_with_self_variables(self.class.many_path)
      response = connection.post(uri, attributes)
      load_and_reset(response)
    end

    def create!
      create || raise(errors.last)
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
panda-1.4.1 lib/panda/modules/builders.rb
panda-1.4.0 lib/panda/modules/builders.rb