deferring 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/deferring.rb +2 -4
- data/lib/deferring/deferred_association.rb +4 -4
- data/lib/deferring/version.rb +1 -1
- data/spec/lib/deferring_habtm_spec.rb +14 -0
- data/spec/lib/deferring_has_many_spec.rb +14 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c9b6ed1d51be050d082becdaf18fe2d600e12d56
|
4
|
+
data.tar.gz: 1fc0c0a26468c3468d6d776db928c907b38d9451
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2db20181a7dd8bae3dea6c419280face512e311d6c29cc9016e92699d053c2ae464807b3586531f41ea40e5ed81ad236a6e0dd43f0c7289ddf67b0ebba886c82
|
7
|
+
data.tar.gz: 9d39513277df77e0d71a0728bc44af4737b72010b75617795b5c6ba4b9a1bce674a0ced3dfdae75a92288a38e47032c88b35bf9703c57b74206965f099bab9f4
|
data/lib/deferring.rb
CHANGED
@@ -86,10 +86,8 @@ module Deferring
|
|
86
86
|
|
87
87
|
# TODO: Implement value_to_boolean code from rails for checking _destroy field.
|
88
88
|
if attributes['_destroy'] == '1' && options[:allow_destroy]
|
89
|
-
# remove from existing records
|
90
|
-
#
|
91
|
-
send(:"#{association_name}").delete(existing_record)
|
92
|
-
existing_record.mark_for_destruction
|
89
|
+
# remove from existing records
|
90
|
+
send(:"#{association_name}").destroy(existing_record)
|
93
91
|
end
|
94
92
|
end
|
95
93
|
|
@@ -86,7 +86,7 @@ module Deferring
|
|
86
86
|
end
|
87
87
|
|
88
88
|
def objects=(records)
|
89
|
-
@objects = records.map do |record|
|
89
|
+
@objects = records.compact.map do |record|
|
90
90
|
if inverse_name && record.class.reflect_on_association(inverse_name)
|
91
91
|
record.send(:"#{inverse_name}=", parent_record)
|
92
92
|
end
|
@@ -109,7 +109,7 @@ module Deferring
|
|
109
109
|
def <<(*records)
|
110
110
|
# TODO: Do we want to prevent including the same object twice? Not sure,
|
111
111
|
# but it will probably be filtered after saving and retrieving as well.
|
112
|
-
records.flatten.uniq.each do |record|
|
112
|
+
records.flatten.compact.uniq.each do |record|
|
113
113
|
run_deferring_callbacks(:link, record) do
|
114
114
|
if inverse_name && record.class.reflect_on_association(inverse_name)
|
115
115
|
record.send(:"#{inverse_name}=", parent_record)
|
@@ -125,14 +125,14 @@ module Deferring
|
|
125
125
|
alias_method :append, :<<
|
126
126
|
|
127
127
|
def delete(*records)
|
128
|
-
records.flatten.uniq.each do |record|
|
128
|
+
records.flatten.compact.uniq.each do |record|
|
129
129
|
run_deferring_callbacks(:unlink, record) { objects.delete(record) }
|
130
130
|
end
|
131
131
|
self
|
132
132
|
end
|
133
133
|
|
134
134
|
def destroy(*records)
|
135
|
-
records.flatten.uniq.each do |record|
|
135
|
+
records.flatten.compact.uniq.each do |record|
|
136
136
|
record = record.to_i if record.is_a? String
|
137
137
|
record = objects.detect { |o| o.id == record } if record.is_a? Fixnum
|
138
138
|
|
data/lib/deferring/version.rb
CHANGED
@@ -54,6 +54,20 @@ RSpec.describe 'deferred has_and_belongs_to_many associations' do
|
|
54
54
|
expect{ bob.save }.to change{ Person.find(bob.id).teams.size }.from(0).to(2)
|
55
55
|
end
|
56
56
|
|
57
|
+
it 'drops nil records' do
|
58
|
+
bob.teams << nil
|
59
|
+
expect(bob.teams).to be_empty
|
60
|
+
|
61
|
+
bob.teams = [nil]
|
62
|
+
expect(bob.teams).to be_empty
|
63
|
+
|
64
|
+
bob.teams.delete(nil)
|
65
|
+
expect(bob.teams).to be_empty
|
66
|
+
|
67
|
+
bob.teams.destroy(nil)
|
68
|
+
expect(bob.teams).to be_empty
|
69
|
+
end
|
70
|
+
|
57
71
|
describe '#collection_singular_ids' do
|
58
72
|
|
59
73
|
it 'returns ids of saved & unsaved associated records' do
|
@@ -49,6 +49,20 @@ RSpec.describe 'deferred has_many associations' do
|
|
49
49
|
expect(bob.issues.first.person).to eq bob
|
50
50
|
end
|
51
51
|
|
52
|
+
it 'drops nil records' do
|
53
|
+
bob.issues << nil
|
54
|
+
expect(bob.issues).to be_empty
|
55
|
+
|
56
|
+
bob.issues = [nil]
|
57
|
+
expect(bob.issues).to be_empty
|
58
|
+
|
59
|
+
bob.issues.delete(nil)
|
60
|
+
expect(bob.issues).to be_empty
|
61
|
+
|
62
|
+
bob.issues.destroy(nil)
|
63
|
+
expect(bob.issues).to be_empty
|
64
|
+
end
|
65
|
+
|
52
66
|
describe 'validations' do
|
53
67
|
xit 'does not create a link when parent is not valid'
|
54
68
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deferring
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robin Roestenburg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|