Class: SimpleJsonapi::Node::Included
- Inherits:
-
Base
- Object
- Base
- SimpleJsonapi::Node::Included
show all
- Defined in:
- lib/simple_jsonapi/node/included.rb
Instance Attribute Summary
Attributes inherited from Base
#extras, #fields_spec, #include_spec, #root_node, #serializer, #serializer_inferrer, #sort_spec
Instance Method Summary
collapse
Constructor Details
#initialize(**options) ⇒ Included
Returns a new instance of Included.
4
5
6
7
8
|
# File 'lib/simple_jsonapi/node/included.rb', line 4
def initialize(**options)
super
@resource_nodes = {}
end
|
Instance Method Details
#append_included_resource(resource_node) ⇒ Node::Resource::Full
17
18
19
20
21
22
23
|
# File 'lib/simple_jsonapi/node/included.rb', line 17
def append_included_resource(resource_node)
if included_resource?(resource_node)
raise DuplicateResourceError.new(resource_node.resource_type, resource_node.resource_id)
end
@resource_nodes[hash_key(resource_node)] = resource_node
end
|
#as_jsonapi ⇒ Hash{Symbol => Hash}
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/simple_jsonapi/node/included.rb', line 26
def as_jsonapi
if @resource_nodes.any?
resources_json = @resource_nodes
.each_value
.sort_by { |node| [node.resource_type, node.resource_id] }
.map(&:as_jsonapi)
{ included: resources_json }
else
{}
end
end
|
#included_resource?(resource_node) ⇒ Boolean
11
12
13
|
# File 'lib/simple_jsonapi/node/included.rb', line 11
def included_resource?(resource_node)
@resource_nodes.key?(hash_key(resource_node))
end
|