Class: Ecoportal::API::V1::PersonDetails
Instance Attribute Summary
#doc
Instance Method Summary
collapse
#as_update, #initialize, passthrough, #print
Instance Method Details
#[](id) ⇒ Object
32
33
34
35
|
# File 'lib/ecoportal/api/v1/person_details.rb', line 32
def [](id)
@fields_by_id or index_fields
(@fields_by_id[id] || @fields_by_alt_id[id])&.value
end
|
#[]=(id, value) ⇒ Object
36
37
38
39
40
41
|
# File 'lib/ecoportal/api/v1/person_details.rb', line 36
def []=(id, value)
@fields_by_id or index_fields
if field = (@fields_by_id[id] || @fields_by_alt_id[id])
field.value = value
end
end
|
#as_json ⇒ Object
7
8
9
|
# File 'lib/ecoportal/api/v1/person_details.rb', line 7
def as_json
super.merge "fields" => fields.map(&:as_json)
end
|
#fields ⇒ Object
16
17
18
19
20
21
|
# File 'lib/ecoportal/api/v1/person_details.rb', line 16
def fields
return @fields if defined?(@fields)
@fields = (doc["fields"] || []).map do |field|
schema_field_value_class.new(field)
end
end
|
#index_fields ⇒ Object
23
24
25
26
27
28
29
30
|
# File 'lib/ecoportal/api/v1/person_details.rb', line 23
def index_fields
@fields_by_id = {}
@fields_by_alt_id = {}
fields.each do |wrapped|
@fields_by_id[wrapped.id] = wrapped
@fields_by_id[wrapped.alt_id] = wrapped
end
end
|
#schema_id=(value) ⇒ Object
11
12
13
14
|
# File 'lib/ecoportal/api/v1/person_details.rb', line 11
def schema_id=(value)
@fields = [] if value.nil?
super
end
|