Sha256: b1f4d7c24265092e2d3bcb49bd789047fc5667a084a97a41502f4b3e5b78f5c2

Contents?: true

Size: 907 Bytes

Versions: 6

Compression:

Stored size: 907 Bytes

Contents

# @abstract subclass and implement {#save!} and {#destroy!}
class Zendesk2::Model < Cistern::Model
  attr_accessor :errors

  # @abstract override in subclass
  # @raise [Zendesk2::Error] if unsuccessful
  def save!
    raise NotImplementError
  end

  # calls {#save!} and sets {#errors} if unsuccessful and applicable
  # @return [Zendesk2::Model] self, regardless of success
  def save
    save!
  rescue Zendesk2::Error => exception
    self.errors = exception.response[:body]["details"].inject({}){|r,(k,v)| r.merge(k => v.map{|e| e["type"] || e["description"]})} rescue nil
    self
  end

  def destroyed?
    !self.reload
  end

  def destroy
    destroy!
  rescue Zendesk2::Error
    false
  end

  # re-define Cistern::Attributes#missing_attributes to require non-blank
  def missing_attributes(args)
    ([:connection] | args).select{|arg| val = send("#{arg}"); val.nil? || val == "" }
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
zendesk2-1.1.3 lib/zendesk2/model.rb
zendesk2-1.1.2 lib/zendesk2/model.rb
zendesk2-1.0.0 lib/zendesk2/model.rb
zendesk2-0.5.4 lib/zendesk2/model.rb
zendesk2-0.5.3 lib/zendesk2/model.rb
zendesk2-0.5.2 lib/zendesk2/model.rb