ripple-anaf 0.8.0.beta1 → 0.8.0.beta2
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.
- data/README.rdoc +9 -4
- data/VERSION +1 -1
- data/lib/ripple-anaf/nested_attributes.rb +32 -1
- data/ripple-anaf.gemspec +2 -2
- data/spec/lib/nested_attributes_spec.rb +36 -1
- metadata +6 -7
data/README.rdoc
CHANGED
|
@@ -41,12 +41,17 @@ And in your views you can use fields_for:
|
|
|
41
41
|
|
|
42
42
|
<% end %>
|
|
43
43
|
|
|
44
|
+
== Installation
|
|
45
|
+
|
|
46
|
+
Currently in pre-release for testing.
|
|
47
|
+
|
|
48
|
+
gem install ripple-anaf --pre
|
|
49
|
+
|
|
44
50
|
== Supported Features
|
|
45
51
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
* :update_only (soon)
|
|
52
|
+
* Same DSL for linked and embedded documents
|
|
53
|
+
* :reject_if
|
|
54
|
+
* :allow_destroy
|
|
50
55
|
|
|
51
56
|
== Note on Patches/Pull Requests
|
|
52
57
|
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.8.0.
|
|
1
|
+
0.8.0.beta2
|
|
@@ -71,7 +71,31 @@ module Ripple
|
|
|
71
71
|
# { :key => 'yyy', :reference => 'updated foo2' } ])
|
|
72
72
|
# manifest.shipments.first.reference # => updated foo1
|
|
73
73
|
# manifest.shipments.second.reference # => updated foo2
|
|
74
|
+
#
|
|
75
|
+
# NOTE: On many embedded, then entire collection of embedded documents is replaced, as there
|
|
76
|
+
# is no key to specifically update.
|
|
74
77
|
#
|
|
78
|
+
# Given
|
|
79
|
+
#
|
|
80
|
+
# class Manifest
|
|
81
|
+
# include Ripple::Documnet
|
|
82
|
+
# many :signatures
|
|
83
|
+
# accepts_nested_attributes_for :signatures
|
|
84
|
+
# end
|
|
85
|
+
#
|
|
86
|
+
# class Signature
|
|
87
|
+
# include Ripple::EmbeddedDocument
|
|
88
|
+
# property :esignature, String
|
|
89
|
+
# end
|
|
90
|
+
#
|
|
91
|
+
# The assigning of attributes replaces existing:
|
|
92
|
+
#
|
|
93
|
+
# manifest = Manifest.create(:signature_attributes => [ { :esig => 'a00001' }, { :esig => 'b00001' } ]
|
|
94
|
+
# manifest.signatures # => [<Signature esig="a00001">, <Signature esig="b00001">]
|
|
95
|
+
#
|
|
96
|
+
# manifest.signature_attributes = [ { :esig => 'c00001' } ]
|
|
97
|
+
# manifest.signatures # => [<Signature esig="c00001">]
|
|
98
|
+
#
|
|
75
99
|
module ClassMethods
|
|
76
100
|
|
|
77
101
|
def accepts_nested_attributes_for(*attr_names)
|
|
@@ -184,7 +208,14 @@ module Ripple
|
|
|
184
208
|
end
|
|
185
209
|
|
|
186
210
|
def assign_nested_attributes_for_many_embedded_association(association_name, attributes_collection)
|
|
187
|
-
|
|
211
|
+
options = nested_attributes_options[association_name]
|
|
212
|
+
send(:"#{association_name}=", []) # Clobber existing
|
|
213
|
+
attributes_collection.each do |attributes|
|
|
214
|
+
attributes = attributes.stringify_keys
|
|
215
|
+
if !reject_new_record?(association_name, attributes)
|
|
216
|
+
send(association_name).build(attributes.except(*UNASSIGNABLE_KEYS))
|
|
217
|
+
end
|
|
218
|
+
end
|
|
188
219
|
end
|
|
189
220
|
|
|
190
221
|
def assign_nested_attributes_for_many_linked_association(association_name, attributes_collection)
|
data/ripple-anaf.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{ripple-anaf}
|
|
8
|
-
s.version = "0.8.0.
|
|
8
|
+
s.version = "0.8.0.beta2"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["Brian Kaney"]
|
|
12
|
-
s.date = %q{2010-09-
|
|
12
|
+
s.date = %q{2010-09-25}
|
|
13
13
|
s.description = %q{Adds the DSL for ANAF for Ripple, an ORM for Riak}
|
|
14
14
|
s.email = %q{brian@vermonster.com}
|
|
15
15
|
s.extra_rdoc_files = [
|
|
@@ -142,7 +142,7 @@ describe Ripple::NestedAttributes do
|
|
|
142
142
|
end
|
|
143
143
|
end
|
|
144
144
|
|
|
145
|
-
context "
|
|
145
|
+
context "one :engine (embedded)" do
|
|
146
146
|
subject { Car.new }
|
|
147
147
|
|
|
148
148
|
it { should respond_to(:engine_attributes=) }
|
|
@@ -196,6 +196,41 @@ describe Ripple::NestedAttributes do
|
|
|
196
196
|
end
|
|
197
197
|
end
|
|
198
198
|
|
|
199
|
+
context "many :seats (embedded)" do
|
|
200
|
+
subject { Car.new }
|
|
201
|
+
|
|
202
|
+
it { should respond_to(:seats_attributes=) }
|
|
203
|
+
|
|
204
|
+
it "should not have passengers" do
|
|
205
|
+
subject.seats.should == []
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
describe "creation" do
|
|
209
|
+
subject { Car.new(:make => 'VW',
|
|
210
|
+
:model => 'Rabbit',
|
|
211
|
+
:seats_attributes => [ { :color => 'red' },
|
|
212
|
+
{ :color => 'blue' },
|
|
213
|
+
{ :color => 'brown' } ] ) }
|
|
214
|
+
|
|
215
|
+
it "should have 3 seats" do
|
|
216
|
+
subject.seats.size.should == 3
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
it "should have 3 passengers with specified names" do
|
|
220
|
+
subject.seats.first.color.should == 'red'
|
|
221
|
+
subject.seats.second.color.should == 'blue'
|
|
222
|
+
subject.seats.third.color.should == 'brown'
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
specify "replace/clobber" do
|
|
226
|
+
subject.seats_attributes = [ { :color => 'orange' } ]
|
|
227
|
+
subject.seats.size.should == 1
|
|
228
|
+
subject.seats.first.color.should == 'orange'
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
|
|
199
234
|
context ":reject_if" do
|
|
200
235
|
it "should not create a wheel" do
|
|
201
236
|
car = Car.new(:wheels_attributes => [ { :diameter => 10 } ])
|
metadata
CHANGED
|
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
|
|
|
6
6
|
- 0
|
|
7
7
|
- 8
|
|
8
8
|
- 0
|
|
9
|
-
-
|
|
10
|
-
version: 0.8.0.
|
|
9
|
+
- beta2
|
|
10
|
+
version: 0.8.0.beta2
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Brian Kaney
|
|
@@ -15,11 +15,12 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2010-09-
|
|
18
|
+
date: 2010-09-25 00:00:00 -04:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
|
22
22
|
name: rspec
|
|
23
|
+
prerelease: false
|
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
|
24
25
|
none: false
|
|
25
26
|
requirements:
|
|
@@ -33,10 +34,10 @@ dependencies:
|
|
|
33
34
|
- 19
|
|
34
35
|
version: 2.0.0.beta.19
|
|
35
36
|
type: :development
|
|
36
|
-
prerelease: false
|
|
37
37
|
version_requirements: *id001
|
|
38
38
|
- !ruby/object:Gem::Dependency
|
|
39
39
|
name: bundler
|
|
40
|
+
prerelease: false
|
|
40
41
|
requirement: &id002 !ruby/object:Gem::Requirement
|
|
41
42
|
none: false
|
|
42
43
|
requirements:
|
|
@@ -48,10 +49,10 @@ dependencies:
|
|
|
48
49
|
- 0
|
|
49
50
|
version: 1.0.0
|
|
50
51
|
type: :development
|
|
51
|
-
prerelease: false
|
|
52
52
|
version_requirements: *id002
|
|
53
53
|
- !ruby/object:Gem::Dependency
|
|
54
54
|
name: ripple
|
|
55
|
+
prerelease: false
|
|
55
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
|
56
57
|
none: false
|
|
57
58
|
requirements:
|
|
@@ -63,7 +64,6 @@ dependencies:
|
|
|
63
64
|
- 0
|
|
64
65
|
version: 0.8.0
|
|
65
66
|
type: :runtime
|
|
66
|
-
prerelease: false
|
|
67
67
|
version_requirements: *id003
|
|
68
68
|
description: Adds the DSL for ANAF for Ripple, an ORM for Riak
|
|
69
69
|
email: brian@vermonster.com
|
|
@@ -112,7 +112,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
112
112
|
requirements:
|
|
113
113
|
- - ">="
|
|
114
114
|
- !ruby/object:Gem::Version
|
|
115
|
-
hash: 2319011372961580373
|
|
116
115
|
segments:
|
|
117
116
|
- 0
|
|
118
117
|
version: "0"
|