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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0807e9de82ca4e5593921580b87eaa83bc6ed3b5
4
- data.tar.gz: cba881489e3cbb1e43a6b87e617eb4a28a3f83ef
3
+ metadata.gz: 063adf3aca91473f0ca98264db2447d2e1811bdf
4
+ data.tar.gz: 2ad2362263132b43e35bdf4c64abc8e15b109821
5
5
  SHA512:
6
- metadata.gz: 3250b185fc57e85c66a1b25b84ad111a1d98b31a76fa434e6587c16a52551d0cc9b43a2ea2abd4b7f963ad723edfe8cbb1807e12e10010d5f37865b8e9d1b198
7
- data.tar.gz: 137c400ee0f8270e69951d5e49c6c61ee5849285983c8121a0dd1fa2aba9692a84d340bd063719445630ed92144268c4ab1fd782b4777306bed47af8618da1cb
6
+ metadata.gz: e4e49d6d106f758823de3516ce6fc5e3f93511f9e5c0161174a4bd8573eb1ae508570449490267a4e4e7aee49d9da0d8734f632ba1d03b9c5e965600a54c0ab6
7
+ data.tar.gz: 03dcc4ef9d7c2f4ed0cc0bb156dea1c4cb7b5551bfc70b6c0bb1a8756f5d792458942d375c7c363072968d138ab63e74c1d3b7c1d790577ef3538cb3d2f9094f
data/.travis.yml CHANGED
@@ -1,4 +1,5 @@
1
1
  language: ruby
2
+
2
3
  rvm:
3
4
  - 1.9.3
4
5
  - 2.0.0
@@ -8,8 +9,11 @@ rvm:
8
9
  - ruby-head
9
10
  - jruby-head
10
11
 
12
+ sudo: false
13
+
11
14
  matrix:
12
15
  allow_failures:
16
+ - rvm: rbx-2
13
17
  - rvm: jruby-19mode
14
18
  - rvm: ruby-head
15
19
  - rvm: jruby-head
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- deferring (0.1.0)
4
+ deferring (0.1.2)
5
5
  activerecord (> 3.0)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- deferring (0.1.0)
4
+ deferring (0.1.2)
5
5
  activerecord (> 3.0)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- deferring (0.1.0)
4
+ deferring (0.1.2)
5
5
  activerecord (> 3.0)
6
6
 
7
7
  GEM
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- deferring (0.1.0)
4
+ deferring (0.1.2)
5
5
  activerecord (> 3.0)
6
6
 
7
7
  GEM
@@ -1,5 +1,5 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  module Deferring
4
- VERSION = '0.1.1'
4
+ VERSION = '0.1.2'
5
5
  end
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.fetch(:as, self.name.underscore.to_sym)
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.all? do |record|
217
- unless valid = record.valid?
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 false unless all_records_valid
231
+ return true if all_records_valid
231
232
 
232
- true
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
- save_deferred_association(association_name, listeners, inverse_association_name)
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
- save_deferred_association(association_name, listeners, inverse_association_name)
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
- generate_save_deferred_assocation_method
258
+ generate_update_deferred_assocation_method
258
259
  generate_find_or_create_deferred_association_method
259
260
  end
260
261
 
261
- def generate_save_deferred_assocation_method
262
- define_method :save_deferred_association do |name, listeners, inverse_association_name|
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
- save_deferred_association(name, listeners, inverse_association_name)
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).all
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.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: 2014-11-18 00:00:00.000000000 Z
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: