module Zendesk2::Model

Attributes

errors[RW]

Public Instance Methods

destroy() click to toggle source
# File lib/zendesk2/model.rb, line 26
def destroy
  destroy!
rescue Zendesk2::Error
  false
end
destroyed?() click to toggle source
# File lib/zendesk2/model.rb, line 22
def destroyed?
  !reload
end
missing_attributes(args) click to toggle source

re-define Cistern::Attributes#missing_attributes to require non-blank

Calls superclass method
# File lib/zendesk2/model.rb, line 33
def missing_attributes(args)
  missing, required = super(args)
  blank, still_required = required.partition { |_, v| '' == v }
  missing.merge!(Hash[blank])

  [missing, Hash[still_required]]
end
save() click to toggle source

calls {#save!} and sets {#errors} if unsuccessful and applicable @return [Zendesk2::Model] self, regardless of success

# File lib/zendesk2/model.rb, line 15
def save
  save!
rescue Zendesk2::Error => exception
  self.errors = error_details(exception)
  self
end
save!() click to toggle source

@abstract override in subclass @raise [Zendesk2::Error] if unsuccessful

# File lib/zendesk2/model.rb, line 9
def save!
  raise NotImplementedError
end
update!(attributes) click to toggle source
# File lib/zendesk2/model.rb, line 41
def update!(attributes)
  merge_attributes(attributes)
  save!
end

Private Instance Methods

error_details(exception) click to toggle source
# File lib/zendesk2/model.rb, line 48
def error_details(exception)
  exception.response[:body]['details'].inject({}) do |a, (k, v)|
    a.merge(k => v.map { |e| e['type'] || e['description'] })
  end
rescue
  nil
end