Sha256: 9dd4a32b683579afa8448bf8d0de35d56b9ab83b04bf29340d41481443b7abba

Contents?: true

Size: 915 Bytes

Versions: 8

Compression:

Stored size: 915 Bytes

Contents

module Pingpp
  module APIOperations
    module Update
      module ClassMethods
        def update(id, params={}, opts={})
          response, opts = request(:put, "#{resource_url(opts)}/#{id}", params, opts)
          Util.convert_to_pingpp_object(response, opts)
        end
      end

      def save(params={}, opts={})
        update_attributes(params)

        params = params.reject { |k, _| respond_to?(k) }

        values = self.serialize_params(self).merge(params)

        values.delete(:id)

        response, opts = request(:put, save_url, values, opts)
        initialize_from(response, opts)

        self
      end

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

      private

      def save_url
        if self[:id] == nil && self.class.respond_to?(:create)
          self.class.resource_url
        else
          resource_url
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
pingpp-2.2.4 lib/pingpp/api_operations/update.rb
pingpp-2.2.3 lib/pingpp/api_operations/update.rb
pingpp-2.2.2 lib/pingpp/api_operations/update.rb
pingpp-2.2.1 lib/pingpp/api_operations/update.rb
pingpp-2.2.0 lib/pingpp/api_operations/update.rb
pingpp-2.1.3 lib/pingpp/api_operations/update.rb
pingpp-2.1.1 lib/pingpp/api_operations/update.rb
pingpp-2.1.0 lib/pingpp/api_operations/update.rb