deferred_associations 0.5.6 → 0.5.7
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 +5 -13
- data/CHANGELOG +4 -0
- data/deferred_associations.gemspec +1 -1
- data/lib/has_and_belongs_to_many_with_deferred_save.rb +4 -1
- data/lib/has_many_with_deferred_save.rb +4 -2
- data/spec/has_and_belongs_to_many_with_deferred_save_spec.rb +1 -1
- data/spec/models/room.rb +3 -0
- metadata +11 -12
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
N2MwNTZhOTE3MWM2MTQzYmIyZWRmMDRkMjM0OTFmMjFjOGJlZmRiMQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 80ea93f4951198652fc52f31762e2bbfba01b748
|
4
|
+
data.tar.gz: 5ac0e402760f95e2cdca7eda2b2f7be32c20e295
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
ZTAzY2Q1MDlhODZhMGJhOGExYTE3ODNmOGIwMGE5ZGM0ZGU2NjE1MmNhZDhh
|
11
|
-
ODJmYzE0NjkzMjNmNGU3NTFjNmU0ZmI4YzFlMWEwZWZiMTFhNjE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
YjUyZGExNGUwN2NjYTgwNmM4NjE3NjViZmMyMGVlYjA2ODFmNjM1MjUzNzM3
|
14
|
-
ZjY4YWI4YjJmY2I3MmY3OWUxN2U1NmQxMWI0MGUzZDRmYjMwNTViMmRlYzBl
|
15
|
-
ZGE5OTA3YWVlYWYyNjk2OGNhMzMzZTU2YWNhZTFmNzNkZDM5NzE=
|
6
|
+
metadata.gz: ffb66400841e0f0b3ff3c94578c819d6f3048b9992399af672dba43aa46ee9aa80f645dfb543702f471c0de24cbeb677eb5b93e714e9e1f9e641270d276bc4b5
|
7
|
+
data.tar.gz: be23972de665dfbcbe5be755a439ad98816caaf787db53c794311e03da12d7966f198d1b7ca0e8c1f7de5ce3446cccf677b835b9aee42505c10b42eb8dda92f1
|
data/CHANGELOG
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "deferred_associations"
|
8
|
-
s.version = "0.5.
|
8
|
+
s.version = "0.5.7"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Martin Koerner", "Tyler Rick", "Alessio Caiazza"]
|
@@ -16,10 +16,13 @@ module ActiveRecord
|
|
16
16
|
# end
|
17
17
|
# end
|
18
18
|
def has_and_belongs_to_many_with_deferred_save(*args)
|
19
|
-
has_and_belongs_to_many *args
|
20
19
|
collection_name = args[0].to_s
|
21
20
|
collection_singular_ids = collection_name.singularize + "_ids"
|
22
21
|
|
22
|
+
return if method_defined?("#{collection_name}_with_deferred_save")
|
23
|
+
|
24
|
+
has_and_belongs_to_many *args
|
25
|
+
|
23
26
|
add_deletion_callback
|
24
27
|
|
25
28
|
attr_accessor :"unsaved_#{collection_name}"
|
@@ -3,9 +3,11 @@ module ActiveRecord
|
|
3
3
|
module ClassMethods
|
4
4
|
|
5
5
|
def has_many_with_deferred_save *args
|
6
|
-
|
6
|
+
collection_name = args[0].to_s
|
7
|
+
|
8
|
+
return if method_defined?("#{collection_name}_with_deferred_save")
|
7
9
|
|
8
|
-
|
10
|
+
has_many *args
|
9
11
|
|
10
12
|
if args[1].is_a?(Hash) && args[1].keys.include?(:through)
|
11
13
|
logger.warn "You are using the option :through on #{self.name}##{collection_name}. This was not tested very much with has_many_with_deferred_save. Please write many tests for your functionality!"
|
@@ -68,7 +68,7 @@ describe "has_and_belongs_to_many_with_deferred_save" do
|
|
68
68
|
@room.reload
|
69
69
|
@room.people.size. should == 2
|
70
70
|
@room.people_without_deferred_save.size. should == 2
|
71
|
-
@people.map {|p| p.reload; p.rooms.size}.
|
71
|
+
@people.map {|p| p.reload; p.rooms.size}. should == [1, 1, 0]
|
72
72
|
end
|
73
73
|
|
74
74
|
it "if they try to go around our accessors and use the original accessors, then (and only then) will the exception be raised in before_adding_person..." do
|
data/spec/models/room.rb
CHANGED
@@ -13,6 +13,9 @@ class Room < ActiveRecord::Base
|
|
13
13
|
has_many_with_deferred_save :tables
|
14
14
|
has_many_with_deferred_save :chairs, :through => :tables #TODO test compatibility with through associations
|
15
15
|
|
16
|
+
has_and_belongs_to_many_with_deferred_save :doors
|
17
|
+
has_many_with_deferred_save :tables
|
18
|
+
|
16
19
|
before_save :diff_after_module
|
17
20
|
|
18
21
|
validate :people_count
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deferred_associations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Koerner
|
@@ -16,35 +16,34 @@ dependencies:
|
|
16
16
|
name: activerecord
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: rspec
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- -
|
33
|
+
- - ">="
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: '0'
|
36
36
|
type: :development
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- -
|
40
|
+
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '0'
|
43
|
-
description:
|
44
|
-
habtm (has_and_belongs_to_many) or has_many
|
45
|
-
|
46
|
-
|
47
|
-
the association was altered."
|
43
|
+
description: |-
|
44
|
+
Makes ActiveRecord defer/postpone saving the records you add to an habtm (has_and_belongs_to_many) or has_many
|
45
|
+
association until you call model.save, allowing validation in the style of normal attributes. Additionally you
|
46
|
+
can check inside before_save filters, if the association was altered.
|
48
47
|
email: martin.koerner@objectfab.de
|
49
48
|
executables: []
|
50
49
|
extensions: []
|
@@ -81,12 +80,12 @@ require_paths:
|
|
81
80
|
- lib
|
82
81
|
required_ruby_version: !ruby/object:Gem::Requirement
|
83
82
|
requirements:
|
84
|
-
- -
|
83
|
+
- - ">="
|
85
84
|
- !ruby/object:Gem::Version
|
86
85
|
version: '0'
|
87
86
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
87
|
requirements:
|
89
|
-
- -
|
88
|
+
- - ">="
|
90
89
|
- !ruby/object:Gem::Version
|
91
90
|
version: '0'
|
92
91
|
requirements: []
|