Class: Vend::ResourceCollection
- Inherits:
-
Object
- Object
- Vend::ResourceCollection
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
#parameters ⇒ Object
Returns the value of attribute parameters.
3
4
5
|
# File 'lib/vend/resource_collection.rb', line 3
def parameters
@parameters
end
|
#store ⇒ Object
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
|
#each ⇒ Object
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_a ⇒ Object
41
42
43
|
# File 'lib/vend/resource_collection.rb', line 41
def to_a
records.to_a
end
|