Class: Graphiti::Serializer
Class Method Summary
collapse
Instance Method Summary
collapse
#polymorphic_subclass?, #remote_resource?, #to_hash
included
included
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(id) ⇒ Object
Allow access to resource methods
74
75
76
77
78
79
80
|
# File 'lib/graphiti/serializer.rb', line 74
def method_missing(id, ...)
if @resource.respond_to?(id, true)
@resource.send(id, ...)
else
super
end
end
|
Class Method Details
.inherited(klass) ⇒ Object
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/graphiti/serializer.rb', line 21
def self.inherited(klass)
super
klass.class_eval do
extend JSONAPI::Serializable::Resource::ConditionalFields
def self.relationship(name, options = {}, &block)
prev = Util::Hash.deep_dup(field_condition_blocks)
super
self.field_condition_blocks = prev
_register_condition(relationship_condition_blocks, name, options)
end
def requested_relationships(fields)
@_relationships.select do |k, _|
_conditionally_included?(self.class.relationship_condition_blocks, k)
end
end
end
end
|
Instance Method Details
#as_jsonapi(kwargs = {}) ⇒ Object
66
67
68
69
70
71
|
# File 'lib/graphiti/serializer.rb', line 66
def as_jsonapi(kwargs = {})
super(**kwargs).tap do |hash|
strip_relationships!(hash) if strip_relationships?
add_links!(hash)
end
end
|
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/graphiti/serializer.rb', line 49
def cursor
starting_offset = 0
page_param = @proxy.query.
if (page_number = page_param[:number])
page_size = page_param[:size] || @resource.default_page_size
starting_offset = (page_number - 1) * page_size
end
if (cursor = page_param[:after])
starting_offset = cursor[:offset]
end
current_offset = @object.instance_variable_get(:@__graphiti_index)
offset = starting_offset + current_offset + 1 Base64.encode64({offset: offset}.to_json).chomp
end
|
#respond_to_missing?(method_name, include_private = true) ⇒ Boolean
82
83
84
|
# File 'lib/graphiti/serializer.rb', line 82
def respond_to_missing?(method_name, include_private = true)
@resource.respond_to?(method_name, include_private) || super
end
|