deferring 0.1.1 → 0.1.2
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/.travis.yml +4 -0
- data/gemfiles/rails_30.gemfile.lock +1 -1
- data/gemfiles/rails_32.gemfile.lock +1 -1
- data/gemfiles/rails_40.gemfile.lock +1 -1
- data/gemfiles/rails_41.gemfile.lock +1 -1
- data/lib/deferring/version.rb +1 -1
- data/lib/deferring.rb +12 -11
- data/spec/lib/deferring_has_many_spec.rb +1 -1
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 063adf3aca91473f0ca98264db2447d2e1811bdf
|
4
|
+
data.tar.gz: 2ad2362263132b43e35bdf4c64abc8e15b109821
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4e49d6d106f758823de3516ce6fc5e3f93511f9e5c0161174a4bd8573eb1ae508570449490267a4e4e7aee49d9da0d8734f632ba1d03b9c5e965600a54c0ab6
|
7
|
+
data.tar.gz: 03dcc4ef9d7c2f4ed0cc0bb156dea1c4cb7b5551bfc70b6c0bb1a8756f5d792458942d375c7c363072968d138ab63e74c1d3b7c1d790577ef3538cb3d2f9094f
|
data/.travis.yml
CHANGED
data/lib/deferring/version.rb
CHANGED
data/lib/deferring.rb
CHANGED
@@ -31,7 +31,7 @@ module Deferring
|
|
31
31
|
def deferred_has_many(*args)
|
32
32
|
options = args.extract_options!
|
33
33
|
listeners = create_callback_listeners!(options)
|
34
|
-
inverse_association_name = options
|
34
|
+
inverse_association_name = options[:as] || options[:inverse_of] || self.name.underscore.to_sym
|
35
35
|
autosave = options.fetch(:autosave, true)
|
36
36
|
validate = options.fetch(:validate, true)
|
37
37
|
|
@@ -213,8 +213,9 @@ module Deferring
|
|
213
213
|
# Do not perform validations when validate: false.
|
214
214
|
return true if validate == false
|
215
215
|
|
216
|
-
all_records_valid = send(:"deferred_#{association_name}").objects.
|
217
|
-
unless
|
216
|
+
all_records_valid = send(:"deferred_#{association_name}").objects.inject(true) do |valid, record|
|
217
|
+
unless record.valid?
|
218
|
+
valid = false
|
218
219
|
if autosave
|
219
220
|
record.errors.each do |attribute, message|
|
220
221
|
attribute = "#{association_name}.#{attribute}"
|
@@ -227,9 +228,9 @@ module Deferring
|
|
227
228
|
end
|
228
229
|
valid
|
229
230
|
end
|
230
|
-
return
|
231
|
+
return true if all_records_valid
|
231
232
|
|
232
|
-
|
233
|
+
false
|
233
234
|
end
|
234
235
|
|
235
236
|
# the save after the parent object has been saved
|
@@ -242,24 +243,24 @@ module Deferring
|
|
242
243
|
send(:"original_#{association_name}=", send(:"deferred_#{association_name}").objects)
|
243
244
|
|
244
245
|
# Store the new value of the association into our delegated association.
|
245
|
-
|
246
|
+
update_deferred_association(association_name, listeners, inverse_association_name)
|
246
247
|
end
|
247
248
|
|
248
249
|
define_method :"reload_with_deferred_#{association_name}" do |*args|
|
249
250
|
find_or_create_deferred_association(association_name, listeners, inverse_association_name)
|
250
251
|
|
251
252
|
send(:"reload_without_deferred_#{association_name}", *args).tap do
|
252
|
-
|
253
|
+
update_deferred_association(association_name, listeners, inverse_association_name)
|
253
254
|
end
|
254
255
|
end
|
255
256
|
alias_method_chain :reload, :"deferred_#{association_name}"
|
256
257
|
|
257
|
-
|
258
|
+
generate_update_deferred_assocation_method
|
258
259
|
generate_find_or_create_deferred_association_method
|
259
260
|
end
|
260
261
|
|
261
|
-
def
|
262
|
-
define_method :
|
262
|
+
def generate_update_deferred_assocation_method
|
263
|
+
define_method :update_deferred_association do |name, listeners, inverse_association_name|
|
263
264
|
klass = self.class.reflect_on_association(:"#{name}").klass
|
264
265
|
send(
|
265
266
|
:"deferred_#{name}=",
|
@@ -274,7 +275,7 @@ module Deferring
|
|
274
275
|
def generate_find_or_create_deferred_association_method
|
275
276
|
define_method :find_or_create_deferred_association do |name, listeners, inverse_association_name|
|
276
277
|
if send(:"deferred_#{name}").nil?
|
277
|
-
|
278
|
+
update_deferred_association(name, listeners, inverse_association_name)
|
278
279
|
end
|
279
280
|
end
|
280
281
|
end
|
@@ -321,7 +321,7 @@ RSpec.describe 'deferred has_many associations' do
|
|
321
321
|
end
|
322
322
|
|
323
323
|
it 'should have loaded the association when joining' do
|
324
|
-
people = Person.includes(:issues).
|
324
|
+
people = Person.includes(:issues).to_a
|
325
325
|
expect(people[1].issues.loaded?).to be_truthy
|
326
326
|
expect(people[1].issue_ids).to eq [printer_issue.id, db_issue.id]
|
327
327
|
end
|
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.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robin Roestenburg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -168,4 +168,3 @@ test_files:
|
|
168
168
|
- spec/support/models/person.rb
|
169
169
|
- spec/support/models/team.rb
|
170
170
|
- spec/support/rails_versions.rb
|
171
|
-
has_rdoc:
|