Class: SimpleJsonapi::Node::Relationship
- Defined in:
- lib/simple_jsonapi/node/relationship.rb
Overview
Represents a single relationship
object.
Instance Attribute Summary collapse
- #relationship_definition ⇒ Definition::Relationship readonly
- #resource ⇒ Object readonly
Attributes inherited from Base
#extras, #fields_spec, #include_spec, #root_node, #serializer, #serializer_inferrer, #sort_spec
Instance Method Summary collapse
- #as_jsonapi ⇒ Hash{Symbol => Hash}
-
#initialize(resource:, relationship_definition:, **options) ⇒ Relationship
constructor
A new instance of Relationship.
- #relationship_name ⇒ String
Constructor Details
#initialize(resource:, relationship_definition:, **options) ⇒ Relationship
Returns a new instance of Relationship.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/simple_jsonapi/node/relationship.rb', line 14 def initialize(resource:, relationship_definition:, **) super() @resource = resource @relationship_definition = relationship_definition if relationship_definition.singular? @data_node = build_child_node( SimpleJsonapi::Node::RelationshipData::Singular, relationship_definition: relationship_definition, resource: , add_to_included: add_to_included?, ) elsif relationship_definition.collection? @data_node = build_child_node( SimpleJsonapi::Node::RelationshipData::Collection, relationship_definition: relationship_definition, resources: , add_to_included: add_to_included?, ) end @links_node = build_child_node( SimpleJsonapi::Node::ObjectLinks, object: resource, link_definitions: relationship_definition.link_definitions, ) = build_child_node( SimpleJsonapi::Node::ObjectMeta, object: resource, meta_definitions: relationship_definition., ) end |
Instance Attribute Details
#relationship_definition ⇒ Definition::Relationship (readonly)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/simple_jsonapi/node/relationship.rb', line 8 class Relationship < Base attr_reader :resource, :relationship_definition # @param resource [Object] # @param relationship_definition [Definition::Relationship] # @param options see {Node::Base#initialize} for additional parameters def initialize(resource:, relationship_definition:, **) super() @resource = resource @relationship_definition = relationship_definition if relationship_definition.singular? @data_node = build_child_node( SimpleJsonapi::Node::RelationshipData::Singular, relationship_definition: relationship_definition, resource: , add_to_included: add_to_included?, ) elsif relationship_definition.collection? @data_node = build_child_node( SimpleJsonapi::Node::RelationshipData::Collection, relationship_definition: relationship_definition, resources: , add_to_included: add_to_included?, ) end @links_node = build_child_node( SimpleJsonapi::Node::ObjectLinks, object: resource, link_definitions: relationship_definition.link_definitions, ) = build_child_node( SimpleJsonapi::Node::ObjectMeta, object: resource, meta_definitions: relationship_definition., ) end # @return [String] def relationship_name relationship_definition.name end # @return [Hash{Symbol => Hash}] def as_jsonapi rel_json = {} rel_json.merge!(@data_node.as_jsonapi) if @data_node rel_json.merge!(@links_node.as_jsonapi) if @links_node rel_json.merge!(.as_jsonapi) if rel_json end private def ||= evaluate( relationship_definition.data_definition, resource, sort: sort_spec[relationship_name.to_sym], ) end def add_to_included? include_spec.include?(relationship_name) end end |
#resource ⇒ Object (readonly)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/simple_jsonapi/node/relationship.rb', line 8 class Relationship < Base attr_reader :resource, :relationship_definition # @param resource [Object] # @param relationship_definition [Definition::Relationship] # @param options see {Node::Base#initialize} for additional parameters def initialize(resource:, relationship_definition:, **) super() @resource = resource @relationship_definition = relationship_definition if relationship_definition.singular? @data_node = build_child_node( SimpleJsonapi::Node::RelationshipData::Singular, relationship_definition: relationship_definition, resource: , add_to_included: add_to_included?, ) elsif relationship_definition.collection? @data_node = build_child_node( SimpleJsonapi::Node::RelationshipData::Collection, relationship_definition: relationship_definition, resources: , add_to_included: add_to_included?, ) end @links_node = build_child_node( SimpleJsonapi::Node::ObjectLinks, object: resource, link_definitions: relationship_definition.link_definitions, ) = build_child_node( SimpleJsonapi::Node::ObjectMeta, object: resource, meta_definitions: relationship_definition., ) end # @return [String] def relationship_name relationship_definition.name end # @return [Hash{Symbol => Hash}] def as_jsonapi rel_json = {} rel_json.merge!(@data_node.as_jsonapi) if @data_node rel_json.merge!(@links_node.as_jsonapi) if @links_node rel_json.merge!(.as_jsonapi) if rel_json end private def ||= evaluate( relationship_definition.data_definition, resource, sort: sort_spec[relationship_name.to_sym], ) end def add_to_included? include_spec.include?(relationship_name) end end |
Instance Method Details
#as_jsonapi ⇒ Hash{Symbol => Hash}
55 56 57 58 59 60 61 62 63 |
# File 'lib/simple_jsonapi/node/relationship.rb', line 55 def as_jsonapi rel_json = {} rel_json.merge!(@data_node.as_jsonapi) if @data_node rel_json.merge!(@links_node.as_jsonapi) if @links_node rel_json.merge!(.as_jsonapi) if rel_json end |
#relationship_name ⇒ String
50 51 52 |
# File 'lib/simple_jsonapi/node/relationship.rb', line 50 def relationship_name relationship_definition.name end |