Class: ActiveModelSerializers::Adapter::JsonApi::Link

Inherits:
Object
  • Object
show all
Includes:
SerializationContext::UrlHelpers
Defined in:
lib/active_model_serializers/adapter/json_api/link.rb

Overview

link definition:

oneOf
  linkString
  linkObject

description:

A link **MUST** be represented as either: a string containing the link's URL or a link
object."

structure:

if href?
  linkString
else
  linkObject
end

linkString definition:

URI

description:

A string containing the link's URL.

structure:

'http://example.com/link-string'

linkObject definition:

JSON Object

properties:

href (required) : URI
meta

structure:

{
  href: 'http://example.com/link-object',
  meta: meta,
}.reject! {|_,v| v.nil? }

Instance Method Summary collapse

Methods included from SerializationContext::UrlHelpers

#default_url_options, included

Constructor Details

#initialize(serializer, value) ⇒ Link

Returns a new instance of Link.


44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/active_model_serializers/adapter/json_api/link.rb', line 44

def initialize(serializer, value)
  @_routes ||= nil # handles warning
  # actionpack-4.0.13/lib/action_dispatch/routing/route_set.rb:417: warning: instance variable @_routes not initialized
  @object = serializer.object
  @scope = serializer.scope
  # Use the return value of the block unless it is nil.
  if value.respond_to?(:call)
    @value = instance_eval(&value)
  else
    @value = value
  end
end

Instance Method Details

#as_jsonObject


67
68
69
70
71
72
73
74
75
# File 'lib/active_model_serializers/adapter/json_api/link.rb', line 67

def as_json
  return @value if @value

  hash = {}
  hash[:href] = @href if defined?(@href)
  hash[:meta] = @meta if defined?(@meta)

  hash.any? ? hash : nil
end

#href(value) ⇒ Object


57
58
59
60
# File 'lib/active_model_serializers/adapter/json_api/link.rb', line 57

def href(value)
  @href = value
  nil
end

#meta(value) ⇒ Object


62
63
64
65
# File 'lib/active_model_serializers/adapter/json_api/link.rb', line 62

def meta(value)
  @meta = value
  nil
end