ocean-dynamo 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.rdoc +2 -2
- data/lib/ocean-dynamo.rb +3 -0
- data/lib/ocean-dynamo/active_record_stuff/association.rb +244 -0
- data/lib/ocean-dynamo/active_record_stuff/collection_association.rb +580 -0
- data/lib/ocean-dynamo/active_record_stuff/collection_proxy.rb +2 -8
- data/lib/ocean-dynamo/active_record_stuff/has_and_belongs_to_many_association.rb +57 -0
- data/lib/ocean-dynamo/active_record_stuff/has_many_association.rb +132 -0
- data/lib/ocean-dynamo/active_record_stuff/reflection.rb +2 -2
- data/lib/ocean-dynamo/active_record_stuff/relation.rb +2 -2
- data/lib/ocean-dynamo/associations/association.rb +158 -0
- data/lib/ocean-dynamo/associations/associations.rb +4 -0
- data/lib/ocean-dynamo/associations/belongs_to.rb +32 -4
- data/lib/ocean-dynamo/associations/collection_association.rb +39 -0
- data/lib/ocean-dynamo/associations/relation.rb +29 -0
- data/lib/ocean-dynamo/attributes.rb +1 -0
- data/lib/ocean-dynamo/version.rb +1 -1
- metadata +9 -2
@@ -0,0 +1,39 @@
|
|
1
|
+
module OceanDynamo #:nodoc:
|
2
|
+
module Associations #:nodoc:
|
3
|
+
#
|
4
|
+
# CollectionAssociation is an abstract class that provides common stuff to
|
5
|
+
# ease the implementation of association proxies that represent
|
6
|
+
# collections. See the class hierarchy in AssociationProxy.
|
7
|
+
#
|
8
|
+
# CollectionAssociation:
|
9
|
+
# HasAndBelongsToManyAssociation => has_and_belongs_to_many
|
10
|
+
# HasManyAssociation => has_many
|
11
|
+
# HasManyThroughAssociation + ThroughAssociation => has_many :through
|
12
|
+
#
|
13
|
+
# CollectionAssociation class provides common methods to the collections
|
14
|
+
# defined by +has_and_belongs_to_many+, +has_many+ or +has_many+ with
|
15
|
+
# +:through association+ option.
|
16
|
+
#
|
17
|
+
# You need to be careful with assumptions regarding the target: The proxy
|
18
|
+
# does not fetch records from the database until it needs them, but new
|
19
|
+
# ones created with +build+ are added to the target. So, the target may be
|
20
|
+
# non-empty and still lack children waiting to be read from the database.
|
21
|
+
# If you look directly to the database you cannot assume that's the entire
|
22
|
+
# collection because new records may have been added to the target, etc.
|
23
|
+
#
|
24
|
+
# If you need to work on all current children, new and existing records,
|
25
|
+
# +load_target+ and the +loaded+ flag are your friends.
|
26
|
+
#
|
27
|
+
class CollectionAssociation < Association #:nodoc:
|
28
|
+
|
29
|
+
#
|
30
|
+
# Resets the collection to the empty array.
|
31
|
+
#
|
32
|
+
def reset
|
33
|
+
super
|
34
|
+
@target = []
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module OceanDynamo
|
2
|
+
|
3
|
+
class Relation
|
4
|
+
|
5
|
+
attr_reader :klass
|
6
|
+
attr_reader :values
|
7
|
+
attr_reader :loaded
|
8
|
+
|
9
|
+
alias :model :klass
|
10
|
+
alias :loaded? :loaded
|
11
|
+
|
12
|
+
|
13
|
+
def initialize(klass, **values)
|
14
|
+
@klass = klass
|
15
|
+
@values = values
|
16
|
+
@loaded = false
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
def new(*args, &block)
|
21
|
+
@klass.new(*args, &block)
|
22
|
+
end
|
23
|
+
|
24
|
+
alias build new
|
25
|
+
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
data/lib/ocean-dynamo/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ocean-dynamo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Bengtson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -160,12 +160,19 @@ extensions: []
|
|
160
160
|
extra_rdoc_files: []
|
161
161
|
files:
|
162
162
|
- config/routes.rb
|
163
|
+
- lib/ocean-dynamo/active_record_stuff/association.rb
|
164
|
+
- lib/ocean-dynamo/active_record_stuff/collection_association.rb
|
163
165
|
- lib/ocean-dynamo/active_record_stuff/collection_proxy.rb
|
166
|
+
- lib/ocean-dynamo/active_record_stuff/has_and_belongs_to_many_association.rb
|
167
|
+
- lib/ocean-dynamo/active_record_stuff/has_many_association.rb
|
164
168
|
- lib/ocean-dynamo/active_record_stuff/reflection.rb
|
165
169
|
- lib/ocean-dynamo/active_record_stuff/relation.rb
|
170
|
+
- lib/ocean-dynamo/associations/association.rb
|
166
171
|
- lib/ocean-dynamo/associations/associations.rb
|
167
172
|
- lib/ocean-dynamo/associations/belongs_to.rb
|
173
|
+
- lib/ocean-dynamo/associations/collection_association.rb
|
168
174
|
- lib/ocean-dynamo/associations/has_many.rb
|
175
|
+
- lib/ocean-dynamo/associations/relation.rb
|
169
176
|
- lib/ocean-dynamo/attributes.rb
|
170
177
|
- lib/ocean-dynamo/basal.rb
|
171
178
|
- lib/ocean-dynamo/class_variables.rb
|