Class: JSONAPIonify::Structure::Objects::Resource

Inherits:
ResourceIdentifier show all
Defined in:
lib/jsonapionify/structure/objects/resource.rb

Overview

ResourceObjects appear in a JSON API document to represent resources.

Direct Known Subclasses

IncludedResource

Instance Attribute Summary

Attributes inherited from Base

#errors, #object, #parent, #warnings

Instance Method Summary collapse

Methods inherited from ResourceIdentifier

#duplicate_does_not_exist?, #duplicate_exists?, #eql?, #hash

Methods inherited from Base

#==, #===, #as_json, #compile, #compile!, #copy, define_order, from_hash, from_json, #initialize, #inspect, #pretty_json, #signature, #to_h, #to_json, #validate

Methods included from Helpers::ObjectDefaults

#[], #[]=

Methods included from Helpers::Validations

#allowed_type_map, #permitted_key?, #permitted_keys, #permitted_type_for?, #permitted_types_for, #required_key?, #required_keys

Methods included from Helpers::ObjectSetters

#[], #[]=

Methods included from Helpers::InheritsOrigin

#client?, #origin, #server?

Methods included from Callbacks

#run_callbacks

Constructor Details

This class inherits a constructor from JSONAPIonify::Structure::Objects::Base

Instance Method Details

#attribute_keysObject

Note: This spec is agnostic about inflection rules, so the value of type can be either plural or singular. However, the same value should be used consistently throughout an implementation.



25
26
27
28
# File 'lib/jsonapionify/structure/objects/resource.rb', line 25

def attribute_keys
  return [] unless self[:attributes]
  self[:attributes].keys
end

#relates_to?(other) ⇒ Boolean

Returns:



35
36
37
38
39
40
41
42
43
# File 'lib/jsonapionify/structure/objects/resource.rb', line 35

def relates_to?(other)
  relationships = self[:relationships]
  return false unless relationships
  relationships.any? do |_, resource_identifier|
    Array.wrap(resource_identifier[:data]).any? do |rel|
      rel[:id] == other[:id] && rel[:type] == other[:type]
    end
  end
end

#relationship_keysObject



30
31
32
33
# File 'lib/jsonapionify/structure/objects/resource.rb', line 30

def relationship_keys
  return [] unless self[:relationships]
  self[:relationships].keys
end