class Caprese::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]
serializer[R]

Public Class Methods

new(serializer, value) click to toggle source
# File lib/caprese/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
  @serializer = serializer
  @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/caprese/adapter/json_api/link.rb, line 72
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
default_url_options() click to toggle source
# File lib/caprese/adapter/json_api/link.rb, line 68
def default_url_options
  Caprese.config.default_url_options
end
href(value) click to toggle source
# File lib/caprese/adapter/json_api/link.rb, line 58
def href(value)
  @href = value
  nil
end
meta(value) click to toggle source
# File lib/caprese/adapter/json_api/link.rb, line 63
def meta(value)
  @meta = value
  nil
end