Class: FastSerializer::JsonModel::Relationship

Inherits:
Attribute show all
Defined in:
lib/fast_serializer/json_model/relationship.rb

Direct Known Subclasses

Array, HasManyRelationship, HasOneRelationship

Instance Attribute Summary collapse

Attributes inherited from Attribute

#cond, #cond_arity, #cond_method_name, #context, #injected, #key, #method, #method_arity, #method_name, #mixin, #opts

Instance Method Summary collapse

Methods inherited from Attribute

#inject, #injectable?, #serialize

Methods inherited from Node

#injectable?, #serialize

Constructor Details

#initialize(key, method, serializer = nil, schema = nil, opts = {}) ⇒ Relationship

Returns a new instance of Relationship.

Parameters:



10
11
12
13
14
15
16
17
18
19
# File 'lib/fast_serializer/json_model/relationship.rb', line 10

def initialize(key, method, serializer = nil, schema = nil, opts = {})
  super(key, method, opts)

  @serializer_klass = serializer
  @schema = schema

  if !@serializer_klass && !@schema
    raise ArgumentError, 'must provide serializer or schema'
  end
end

Instance Attribute Details

#serialization_schemaObject

Returns the value of attribute serialization_schema.



6
7
8
# File 'lib/fast_serializer/json_model/relationship.rb', line 6

def serialization_schema
  @serialization_schema
end

Instance Method Details

#exclude?(params) ⇒ Boolean

Parameters:

  • params (Hash)

Returns:

  • (Boolean)


37
38
39
40
41
42
# File 'lib/fast_serializer/json_model/relationship.rb', line 37

def exclude?(params)
  return false if params[:exclude].nil?
  return false if params[:exclude].empty?

  params[:exclude_index].key?(key)
end

#include?(params) ⇒ Boolean

Parameters:

  • params (Hash)

Returns:

  • (Boolean)


46
47
48
49
50
51
# File 'lib/fast_serializer/json_model/relationship.rb', line 46

def include?(params)
  return true if params[:include].nil?
  return false if params[:include].empty?

  params[:include_index].key?(key)
end

#include_relation?(params) ⇒ Boolean

Parameters:

  • params (Hash)

Returns:

  • (Boolean)


31
32
33
# File 'lib/fast_serializer/json_model/relationship.rb', line 31

def include_relation?(params)
  include?(params) && !exclude?(params)
end

#included?(resource, params, context) ⇒ Boolean

Parameters:

  • resource (Object)
  • params (Hash)
  • context (Hash)

Returns:

  • (Boolean)


25
26
27
# File 'lib/fast_serializer/json_model/relationship.rb', line 25

def included?(resource, params, context)
  super && include_relation?(params)
end