module ActiveRequest::Queries::InstanceMethods

Public Instance Methods

delete() click to toggle source
# File lib/active_request/queries.rb, line 54
def delete
  instance_variable_set("@errors", [])
  response = self.class.delete("/#{self.class.model_name.pluralize}/#{id}.json", headers: self.class.headers)
  unless 200 == response.code
    instance_variable_set("@errors", response["errors"])
    return false
  end
  body = JSON.parse(response.body)
  true
end
save() click to toggle source
# File lib/active_request/queries.rb, line 65
def save
  instance_variable_set("@errors", [])
  response = id.present? ? do_put : do_post
  return false unless response
  body = JSON.parse(response.body)
  instance_variable_set("@id", body[self.class.model_name]["id"])
  true
end

Private Instance Methods

add_key_value(key, value) click to toggle source
# File lib/active_request/queries.rb, line 104
def add_key_value(key, value)
  { key => value } if value
end
do_post() click to toggle source
# File lib/active_request/queries.rb, line 76
def do_post
  response = self.class.post("/#{self.class.model_name.pluralize}.json", query: query, headers: self.class.headers)
  unless 201 == response.code
    instance_variable_set("@errors", response["errors"])
    return false
  end
  response
end
do_put() click to toggle source
# File lib/active_request/queries.rb, line 85
def do_put
  response = self.class.put("/#{self.class.model_name.pluralize}/#{id}.json", query: query, headers: self.class.headers)
  unless 200 == response.code
    instance_variable_set("@errors", response["errors"])
    return false
  end
  response
end
query() click to toggle source
# File lib/active_request/queries.rb, line 94
def query
  many_atts = query_for_manys.reduce(:merge)
  local_atts = attributes.map { |att| add_key_value(att, send(att)) }.reject(&:blank?).reduce(:merge)
  { self.class.model_name => local_atts ? local_atts.merge(many_atts) : many_atts }
end
query_for_manys() click to toggle source
# File lib/active_request/queries.rb, line 100
def query_for_manys
  has_manys.map { |many| { "#{Object.const_get(many[:class_name]).model_name.pluralize}_attributes" => send(many[:association]).map { |item| item.attributes.map { |att| add_key_value(att, item.send(att)) }.reject(&:blank?).reduce(:merge) } } }
end