Class: Depository::Model

Inherits:
Object
  • Object
show all
Defined in:
lib/depository/model.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attrs = {}) ⇒ Model

Returns a new instance of Model.



26
27
28
29
# File 'lib/depository/model.rb', line 26

def initialize(attrs = {})
  set(attrs)
  _defaults.each { |key, val| set(key, val) if !get(key) }
end

Class Method Details

._defaultsObject



21
22
23
# File 'lib/depository/model.rb', line 21

def _defaults
  @_defaults ||= {}
end

._fieldsObject



13
14
15
# File 'lib/depository/model.rb', line 13

def _fields
  @_fields ||= []
end

.defaults(defaults) ⇒ Object



17
18
19
# File 'lib/depository/model.rb', line 17

def defaults(defaults)
  self._defaults = defaults
end

.fields(*fields) ⇒ Object



8
9
10
11
# File 'lib/depository/model.rb', line 8

def fields(*fields)
  attr_accessor *fields
  self._fields = fields
end

Instance Method Details

#==(other) ⇒ Object



51
52
53
# File 'lib/depository/model.rb', line 51

def ==(other)
  other.is_a?(self.class) && other.to_hash == to_hash
end

#get(attr) ⇒ Object



37
38
39
# File 'lib/depository/model.rb', line 37

def get(attr)
  instance_variable_get(:"@#{attr}")
end

#set(attr, value = nil) ⇒ Object



41
42
43
44
45
46
47
48
49
# File 'lib/depository/model.rb', line 41

def set(attr, value = nil)
  if attr.is_a?(Hash)
    attr.each { |key, value| set(key, value) }
  else
    public_send(:"#{attr}=", value)
  end

  return self
end

#to_hashObject



31
32
33
34
35
# File 'lib/depository/model.rb', line 31

def to_hash
  _fields.reduce({}) do |acc, field|
    acc.merge(field => get(field))
  end
end