deferring 0.2.0 → 0.2.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/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
|