class ActiveModelSerializers::Adapter::JsonApi::Link

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

Attributes

object[R]
scope[R]

Public Class Methods

new(serializer, value) click to toggle source
# File lib/active_model_serializers/adapter/json_api/link.rb, line 46
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

Public Instance Methods

as_json() click to toggle source
# File lib/active_model_serializers/adapter/json_api/link.rb, line 69
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) click to toggle source
# File lib/active_model_serializers/adapter/json_api/link.rb, line 59
def href(value)
  @href = value
  nil
end
meta(value) click to toggle source
# File lib/active_model_serializers/adapter/json_api/link.rb, line 64
def meta(value)
  @meta = value
  nil
end