class Ecoportal::API::V1::SchemaFieldValue
@todo Rename to PersonDetailsField
Public Instance Methods
maybe_multiple(value) { |v| ... }
click to toggle source
# File lib/ecoportal/api/v1/schema_field_value.rb, line 52 def maybe_multiple(value) if multiple unless value.is_a?(Array) raise "Expected Array, got #{value.class}" end value.map {|v| yield v } else yield value end end
value()
click to toggle source
# File lib/ecoportal/api/v1/schema_field_value.rb, line 8 def value case type when "text", "phone_number", "number", "boolean", "select" doc["value"] when "date" if doc["value"] maybe_multiple(doc["value"]) do |v| Date.iso8601(v) end end else raise "Unknown type #{type}" end end
value=(value)
click to toggle source
# File lib/ecoportal/api/v1/schema_field_value.rb, line 23 def value=(value) case type when "text", "phone_number", "select" doc["value"] = maybe_multiple(value) do |v| v&.to_s end when "number" maybe_multiple(value) do |v| unless v.nil? || v.is_a?(Numeric) raise "Invalid number type #{v.class}" end end doc["value"] = value when "boolean" doc["value"] = !!value when "date" maybe_multiple(value) do |v| unless v.nil? || v.respond_to?(:to_date) raise "Invalid date type #{v.class}" end end doc["value"] = maybe_multiple(value) do |v| v&.to_date&.to_s end else raise "Unknown type #{type}" end end