Class: Vend::Resource

Inherits:
Object
  • Object
show all
Includes:
Virtus
Defined in:
lib/vend/resource.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ Resource

Returns a new instance of Resource.



12
13
14
15
16
17
# File 'lib/vend/resource.rb', line 12

def initialize attributes={}
  current_attribute_set = attribute_set
  self.extend(Virtus)
  attribute_set.merge(current_attribute_set)
  initialize_virtus attributes
end

Instance Attribute Details

#storeObject

Returns the value of attribute store.



7
8
9
# File 'lib/vend/resource.rb', line 7

def store
  @store
end

Instance Method Details

#initialize_virtusObject



11
# File 'lib/vend/resource.rb', line 11

alias_method :initialize_virtus, :initialize

#set_attributes(attributes) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/vend/resource.rb', line 20

def set_attributes(attributes)
  public_method_names = public_methods.map(&:to_s)

  unknown_attributes = attributes.
    dup.
    delete_if{|k, v| public_method_names.include?("#{k.to_s}=") }

  if unknown_attributes.size > 0
    dates = %w{ created_at deleted_at updated_at }
    self.extend Virtus unless self.respond_to?(:attribute)
    unknown_attributes.
      each do |k,v|
        case
        when dates.include?(k)
          klass = DateTime
        else
          klass = String
        end
        self.attribute k, klass
      end
  end

  set_attributes_virtus attributes
end

#set_attributes_virtusObject



19
# File 'lib/vend/resource.rb', line 19

alias_method :set_attributes_virtus, :set_attributes