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