Class: Vend::ResourceCollection

Inherits:
Object
  • Object
show all
Includes:
Enumerable, Finders
Defined in:
lib/vend/resource_collection.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Finders

#find

Constructor Details

#initialize(store, klass, records = nil) ⇒ ResourceCollection

Returns a new instance of ResourceCollection.



8
9
10
11
12
# File 'lib/vend/resource_collection.rb', line 8

def initialize(store, klass, records = nil)
  @store = store
  @klass = klass
  @records = records
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(symbol, *args) ⇒ Object

Check for a collection method defined on the resource



17
18
19
20
21
22
23
# File 'lib/vend/resource_collection.rb', line 17

def method_missing symbol, *args
  if @klass.collection_methods[symbol]
    instance_exec *args, &@klass.collection_methods[symbol]
  else
    super
  end
end

Instance Attribute Details

#parametersObject

Returns the value of attribute parameters.



3
4
5
# File 'lib/vend/resource_collection.rb', line 3

def parameters
  @parameters
end

#storeObject

Returns the value of attribute store.



3
4
5
# File 'lib/vend/resource_collection.rb', line 3

def store
  @store
end

Instance Method Details

#<<(record) ⇒ Object



37
38
39
# File 'lib/vend/resource_collection.rb', line 37

def << record
  (@records || []) << record
end

#build(attributes) ⇒ Object



33
34
35
# File 'lib/vend/resource_collection.rb', line 33

def build(attributes)
  @klass.new(attributes.merge store: @store)
end

#create(attributes = {}) ⇒ Object



25
26
27
# File 'lib/vend/resource_collection.rb', line 25

def create(attributes = {})
  build(attributes).tap(&:save)
end

#create!(attributes = {}) ⇒ Object



29
30
31
# File 'lib/vend/resource_collection.rb', line 29

def create!(attributes = {})
  build(attributes).tap(&:save!)
end

#eachObject



45
46
47
48
49
# File 'lib/vend/resource_collection.rb', line 45

def each
  records.each do |attributes|
    yield build(attributes)
  end
end

#to_aObject



41
42
43
# File 'lib/vend/resource_collection.rb', line 41

def to_a
  records.to_a
end