Sha256: 590564729fb7368616cdfacac82ebd5e6f534f49ec5e34fdf5a68d2618f2bb8a
Contents?: true
Size: 1.09 KB
Versions: 8
Compression:
Stored size: 1.09 KB
Contents
require 'intercom/traits/api_resource' module Intercom module ApiOperations module Save module ClassMethods def create(params) instance = self.new(params) instance.mark_fields_as_changed!(params.keys) instance.save end end def self.included(base) base.extend(ClassMethods) end def save collection_name = Utils.resource_class_to_collection_name(self.class) if id_present? && !posted_updates? response = Intercom.put("/#{collection_name}/#{id}", to_submittable_hash) else response = Intercom.post("/#{collection_name}", to_submittable_hash.merge(identity_hash)) end from_response(response) if response # may be nil we received back a 202 end private def id_present? id && id.to_s != '' end def posted_updates? respond_to?(:update_verb) && update_verb == 'post' end def identity_hash respond_to?(:identity_vars) ? to_hash.slice(*(identity_vars.map(&:to_s))) : {} end end end end
Version data entries
8 entries across 8 versions & 1 rubygems