class Wordpress::Object::MetaObject

Public Class Methods

attr_meta_object(params) click to toggle source
# File lib/wordpress/object/meta_object.rb, line 14
def attr_meta_object(params)
  self.meta_objects = (meta_objects || {}).merge(Hash[params.map{ |k, v| [k.to_s, v] }])
end
inherited(base) click to toggle source
# File lib/wordpress/object/meta_object.rb, line 8
def inherited(base)
  base.class_eval do
    attr_parameter :meta
  end
end

Public Instance Methods

assign(response) click to toggle source
Calls superclass method Wordpress::Object::Base#assign
# File lib/wordpress/object/meta_object.rb, line 19
def assign(response)
  @cached_objects = {}
  super
end
delete() click to toggle source
# File lib/wordpress/object/meta_object.rb, line 37
def delete
  raise NotImplementedError
end
reload() click to toggle source
# File lib/wordpress/object/meta_object.rb, line 24
def reload
  if meta && meta.links && meta.links.self
    request = Wordpress::Request.new(:get, meta.links.self)
    client.exec_api(request) do |json|
      self.assign(json)
    end
  end
end
save() click to toggle source
# File lib/wordpress/object/meta_object.rb, line 33
def save
  raise NotImplementedError
end

Private Instance Methods

associated_object?(name) click to toggle source
# File lib/wordpress/object/meta_object.rb, line 43
def associated_object?(name)
  name = name.to_s
  @response['meta'] && @response['meta']['links'] && @response['meta']['links'].include?(name) && meta_objects.include?(name)
end
available_object?(name) click to toggle source
# File lib/wordpress/object/meta_object.rb, line 48
def available_object?(name)
  associated_object?(name) || super
end
get_object(name) click to toggle source
Calls superclass method Wordpress::Object::Base#get_object
# File lib/wordpress/object/meta_object.rb, line 52
def get_object(name)
  name = name.to_s
  if associated_object?(name)
    @cached_objects[name] ||= begin
      request = Wordpress::Request.new(:get, meta.links.send(name))
      json = client.call(request)
      Wordpress::Object.const_get(meta_objects[name]).new(client, json)
    end
  else
    super
  end
end