class RealSavvy::Resource
Attributes
document[R]
json[R]
Public Class Methods
new(json, document)
click to toggle source
# File lib/real_savvy/resource.rb, line 8 def initialize(json, document) @json = json @document = document end
Public Instance Methods
attributes()
click to toggle source
# File lib/real_savvy/resource.rb, line 25 def attributes @attributes ||= RealSavvy::Attributes.new(json['attributes'] || {}) end
hash()
click to toggle source
# File lib/real_savvy/resource.rb, line 13 def hash {id: id, type: type}.to_json.hash end
id()
click to toggle source
# File lib/real_savvy/resource.rb, line 17 def id json['id'] end
inspect()
click to toggle source
# File lib/real_savvy/resource.rb, line 41 def inspect json.inspect end
links()
click to toggle source
# File lib/real_savvy/resource.rb, line 29 def links @links ||= RealSavvy::Links.new(json['links'] || {}) end
meta()
click to toggle source
# File lib/real_savvy/resource.rb, line 33 def meta @meta ||= RealSavvy::Meta.new(json['meta'] || {}) end
relationships()
click to toggle source
# File lib/real_savvy/resource.rb, line 37 def relationships self end
type()
click to toggle source
# File lib/real_savvy/resource.rb, line 21 def type json['type'] end
Private Instance Methods
build_relationship(relationship)
click to toggle source
# File lib/real_savvy/resource.rb, line 60 def build_relationship(relationship) relationship_raw = json['relationships']&.[](relationship.to_s)&.[]('data') relationship_processed = ::RealSavvy::Document.process_resources(relationship_raw) end
has_relationship(relationship)
click to toggle source
# File lib/real_savvy/resource.rb, line 55 def has_relationship(relationship) possible_relation_ship = json['relationships']&.[](relationship.to_s) possible_relation_ship && possible_relation_ship.length > 0 end
load_relationship_with_lookup(relationship)
click to toggle source
# File lib/real_savvy/resource.rb, line 65 def load_relationship_with_lookup(relationship) loaded_relationships[relationship] ||= begin relationship_object = build_relationship(relationship) if relationship_object.is_a?(Array) relationship_object.map { |resource| objects_lookup[resource.hash] || resource } else objects_lookup[relationship_object.hash] || relationship_object end end end
loaded_relationships()
click to toggle source
# File lib/real_savvy/resource.rb, line 51 def loaded_relationships @loaded_relationships ||= {} end
method_missing(m, *args, &block)
click to toggle source
Calls superclass method
# File lib/real_savvy/resource.rb, line 76 def method_missing(m, *args, &block) if has_relationship(m) load_relationship_with_lookup(m) else super end end
objects_lookup()
click to toggle source
# File lib/real_savvy/resource.rb, line 47 def objects_lookup document&.objects_lookup || {} end