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
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 |