Class: Alula::Dcp::ObjectField

Inherits:
Object
  • Object
show all
Extended by:
ResourceAttributes
Defined in:
lib/alula/dcp/resource_attributes.rb

Direct Known Subclasses

UsersData::User::Partition

Instance Method Summary collapse

Methods included from ResourceAttributes

date_fields, extended, field, field_names, filterable_fields, get_fields, get_http_methods, get_resource_path, get_type, http_methods, param_key, resource_path, sortable_fields, type

Constructor Details

#initialize(parent_field, properties = nil) ⇒ ObjectField

Assume properties is camel case



148
149
150
151
152
153
154
155
156
157
158
159
160
161
# File 'lib/alula/dcp/resource_attributes.rb', line 148

def initialize(parent_field, properties = nil)
  @parent_field = parent_field
  return unless properties

  valid_fields = self.class.get_fields
  properties.dup.each do |key, value|
    ruby_key = Alula::Util.underscore(key.to_s)
    next unless valid_fields.key?(ruby_key.to_sym)

    instance_variable_set("@#{ruby_key}", value)
    define_singleton_method(ruby_key) { instance_variable_get("@#{ruby_key}") }
    define_singleton_method("#{ruby_key}=") { |val| instance_variable_set("@#{ruby_key}", val) }
  end
end

Instance Method Details

#as_jsonObject



163
164
165
166
167
168
169
170
171
# File 'lib/alula/dcp/resource_attributes.rb', line 163

def as_json
  field_names.each_with_object({}) do |ruby_key, obj|
    key = Util.camelize(ruby_key)
    val = respond_to?(ruby_key) ? send(ruby_key) : nil
    next if val.nil?

    obj[key] = parse_value(val, ruby_key)
  end
end