lib/panda/modules/builders.rb in panda-1.3.0 vs lib/panda/modules/builders.rb in panda-1.4.0
- old
+ new
@@ -1,37 +1,45 @@
module Panda
module Builders
def self.included(base)
- base.extend(CreateBuilder)
- base.extend(DeleteBuilder)
+ base.extend(ClassMethods)
end
- module CreateBuilder
+ module ClassMethods
- def create(attributes)
+ def create(attributes={})
resource = build_resource(attributes)
+ yield resource if block_given?
+
resource.create
resource
end
- def create!(attributes)
+ 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
- module DeleteBuilder
- def delete(id)
- response = connection.delete(full_object_url(object_url(one_path,{:id =>id})))
- response['deleted'] == 'ok'
- 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
\ No newline at end of file