class SimpleJsonapi::Node::Relationships
Represents a resource's relationships
object, which contains the individual relationship
object.
@!attribute [r] resource
@return [Object]
@!attribute [r] resource_type
@return [String]
@!attribute [r] relationship_definitions
@return [Hash{Symbol => Definition::Relationship}]
Attributes
relationship_definitions[R]
resource[R]
resource_type[R]
Public Class Methods
new(resource:, resource_type:, relationship_definitions:, **options)
click to toggle source
@param resource [Object] @param resource_type
[String] @param relationship_definitions
[Hash{Symbol => Definition::Relationship}] @param options see {Node::Base#initialize} for additional parameters
Calls superclass method
SimpleJsonapi::Node::Base::new
# File lib/simple_jsonapi/node/relationships.rb, line 18 def initialize(resource:, resource_type:, relationship_definitions:, **options) super(options) @resource = resource @resource_type = resource_type @relationship_definitions = relationship_definitions @relationship_nodes = relationship_definitions_to_render.map do |_name, defn| build_child_node( SimpleJsonapi::Node::Relationship, resource: resource, relationship_definition: defn, ) end end
Public Instance Methods
as_jsonapi()
click to toggle source
@return [Hash{Symbol => Hash}]
# File lib/simple_jsonapi/node/relationships.rb, line 35 def as_jsonapi if @relationship_nodes.any? json = {} @relationship_nodes.each do |rel_node| json[rel_node.relationship_name] = rel_node.as_jsonapi end { relationships: json } else {} end end
Private Instance Methods
relationship_definitions_to_render()
click to toggle source
# File lib/simple_jsonapi/node/relationships.rb, line 49 def relationship_definitions_to_render @relationship_definitions_to_render ||= begin include_all_fields = fields_spec.all_fields?(resource_type) explicit_fields = fields_spec[resource_type] relationship_definitions .select { |name, _| include_all_fields || explicit_fields.include?(name) } .select { |_, defn| render?(defn, resource) } end end