class SimpleJsonapi::Node::Error

@!attribute [r] error

@return [Object]

Attributes

error[R]

Public Class Methods

new(error:, **options) click to toggle source

@param error [Object] @param options see {Node::Base#initialize} for additional parameters

Calls superclass method SimpleJsonapi::Node::Base::new
# File lib/simple_jsonapi/node/error.rb, line 9
def initialize(error:, **options)
  super(options)

  @error = error
  @serializer = serializer_inferrer.infer(error).new

  @source_node = build_child_node(
    SimpleJsonapi::Node::ErrorSource,
    error: error,
    source_definition: serializer.source_definition,
  )

  @links_node = build_child_node(
    SimpleJsonapi::Node::ObjectLinks,
    object: error,
    link_definitions: serializer.link_definitions,
  )

  @meta_node = build_child_node(
    SimpleJsonapi::Node::ObjectMeta,
    object: error,
    meta_definitions: serializer.meta_definitions,
  )
end

Public Instance Methods

as_jsonapi() click to toggle source

@return [Hash{Symbol => Hash}]

# File lib/simple_jsonapi/node/error.rb, line 35
def as_jsonapi
  json = {}

  member_definitions_to_render.each do |name, defn|
    json[name] = evaluate(defn.value_proc, error).to_s
  end

  json.merge!(@source_node.as_jsonapi)
  json.merge!(@links_node.as_jsonapi)
  json.merge!(@meta_node.as_jsonapi)

  json
end

Private Instance Methods

member_definitions_to_render() click to toggle source
# File lib/simple_jsonapi/node/error.rb, line 51
def member_definitions_to_render
  @member_definitions_to_render ||= serializer.member_definitions.select { |_, defn| render?(defn, error) }
end