Class: DearInventory::Model

Inherits:
Object
  • Object
show all
Extended by:
IsASubclass, T::Helpers, T::Sig
Defined in:
lib/dear_inventory/model.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from IsASubclass

is_a?

Constructor Details

#initialize(values = nil) ⇒ Model

Returns a new instance of Model.



45
46
47
48
49
50
51
52
53
54
# File 'lib/dear_inventory/model.rb', line 45

def initialize(values = nil)
  initialize_abstract

  return if values.nil?

  self.class.enumerate_fields do |response_name, specifications|
    value = field_value(response_name, T.must(values), specifications)
    instance_variable_set(:"@#{specifications[:name]}", value)
  end
end

Class Method Details

.enumerate_fieldsObject



34
35
36
37
38
# File 'lib/dear_inventory/model.rb', line 34

def self.enumerate_fields
  const_get(:FIELDS).each do |response_name, specifications|
    yield(response_name, specifications)
  end
end

.fields(fields) ⇒ Object



22
23
24
25
26
27
28
29
30
31
# File 'lib/dear_inventory/model.rb', line 22

def self.fields(fields)
  if const_defined?(:FIELDS, false)
    fields = remove_const(:FIELDS).merge(fields)
  end
  const_set(:FIELDS, fields.freeze)

  enumerate_fields do |_, specifications|
    __send__(:attr_reader, specifications[:name])
  end
end

Instance Method Details

#initialize_abstractObject



40
# File 'lib/dear_inventory/model.rb', line 40

alias initialize_abstract initialize