acts_as_paranoid_dag 0.0.2 → 0.0.3
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 +7 -0
- data/README.md +6 -3
- data/lib/acts_as_paranoid_dag/model_additions.rb +17 -10
- data/lib/acts_as_paranoid_dag/version.rb +1 -1
- data/spec/acts_as_paranoid_dag/model_additions_spec.rb +55 -8
- metadata +84 -59
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d2bcf415238ff52038dcc776b8e2b1f259052b00
|
4
|
+
data.tar.gz: b3d20a16d5b554e406380c052354ebf11cd021b0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 40e9f6d373f775097b9de5b38ce1db6e586b5eb707800cc90213b65ba2ffba7e0e2b2c077e53aa4d28a3762f175b6834ecd8abc3ad390824162356ec57cc33f5
|
7
|
+
data.tar.gz: b1b2963bdbabdba8b1682f627d015f42956d77690925cb5a26251b751450b1debf57ced71b885514ec5d28615f1f1350d21b6ee23b7722664574121e3ddd0891
|
data/README.md
CHANGED
@@ -65,11 +65,14 @@ user.links_as_child.at_time( 1.hour.ago ).count # => 0
|
|
65
65
|
|
66
66
|
# deleting links
|
67
67
|
link = user.links_as_child.now.first
|
68
|
-
link.destroy
|
69
|
-
link.destroy!
|
68
|
+
link.destroy # mark this link as deleted, but leave it in the database
|
69
|
+
link.destroy! # really delete the link from the database
|
70
|
+
link.destroy_permanently # same as destroy!
|
70
71
|
```
|
71
72
|
|
72
|
-
You
|
73
|
+
(You don't need to call `destroy` before calling `destroy_permanently` or `destroy!`, but you can.)
|
74
|
+
|
75
|
+
You may want to have [a look at these specs](https://github.com/fiedl/acts_as_paranoid_dag/blob/master/spec/acts_as_paranoid_dag/model_additions_spec.rb).
|
73
76
|
|
74
77
|
## Contributing
|
75
78
|
|
@@ -4,18 +4,19 @@ module ActsAsParanoidDag
|
|
4
4
|
|
5
5
|
# This allows you to make your dag paranoid, meaning that connections are not destroyed,
|
6
6
|
# but instead a 'deleted_at' attribute is set.
|
7
|
+
#
|
7
8
|
# In your DagLink model replace
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
|
9
|
+
#
|
10
|
+
# class DagLink < ActiveRecord::Base
|
11
|
+
# acts_as_dag_links options
|
12
|
+
# end
|
13
|
+
#
|
13
14
|
# by
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
|
15
|
+
#
|
16
|
+
# class DagLink < ActiveRecord::Base
|
17
|
+
# acts_as_dag_links options, paranoid: true
|
18
|
+
# end
|
19
|
+
#
|
19
20
|
def acts_as_dag_links( params )
|
20
21
|
|
21
22
|
# Find out whether the dag link should have the paranoid extension.
|
@@ -53,6 +54,12 @@ module ActsAsParanoidDag
|
|
53
54
|
|
54
55
|
module DagLinkInstanceMethods
|
55
56
|
# here the new instance methods for the DagLink model.
|
57
|
+
|
58
|
+
# This is just an alias for the +destroy!+ method.
|
59
|
+
#
|
60
|
+
def destroy_permanently
|
61
|
+
self.destroy! # This method is defined in the rails3_acts_as_paranoid gem.
|
62
|
+
end
|
56
63
|
end
|
57
64
|
|
58
65
|
|
@@ -125,16 +125,63 @@ describe ActsAsParanoidDag do
|
|
125
125
|
@link = @user.links_as_child.first
|
126
126
|
end
|
127
127
|
subject { @link.destroy! }
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
128
|
+
|
129
|
+
describe "for existing links" do
|
130
|
+
it "should really remove the dag link" do
|
131
|
+
@link.deleted_at.should == nil
|
132
|
+
subject
|
133
|
+
@user.links_as_child.count.should == 0
|
134
|
+
@user.links_as_child.now_and_in_the_past.count.should == 0
|
135
|
+
@user.parents.count.should == 0
|
136
|
+
DagLink.all.count.should == 0
|
137
|
+
DagLink.with_deleted.all.count.should == 0
|
138
|
+
end
|
139
|
+
end
|
140
|
+
describe "for already destroyed links" do
|
141
|
+
before { @link.destroy }
|
142
|
+
it "should really remove the dag link" do
|
143
|
+
@link.deleted_at.should_not == nil
|
144
|
+
subject
|
145
|
+
@user.links_as_child.count.should == 0
|
146
|
+
@user.links_as_child.now_and_in_the_past.count.should == 0
|
147
|
+
@user.parents.count.should == 0
|
148
|
+
DagLink.all.count.should == 0
|
149
|
+
DagLink.with_deleted.all.count.should == 0
|
150
|
+
end
|
136
151
|
end
|
137
152
|
end
|
153
|
+
|
154
|
+
describe "#destroy_permanently" do
|
155
|
+
before do
|
156
|
+
@user.parent_groups << @group
|
157
|
+
@link = @user.links_as_child.first
|
158
|
+
end
|
159
|
+
subject { @link.destroy_permanently }
|
160
|
+
|
161
|
+
describe "for existing links" do
|
162
|
+
it "should really remove the dag link" do
|
163
|
+
@link.deleted_at.should == nil
|
164
|
+
subject
|
165
|
+
@user.links_as_child.count.should == 0
|
166
|
+
@user.links_as_child.now_and_in_the_past.count.should == 0
|
167
|
+
@user.parents.count.should == 0
|
168
|
+
DagLink.all.count.should == 0
|
169
|
+
DagLink.with_deleted.all.count.should == 0
|
170
|
+
end
|
171
|
+
end
|
172
|
+
describe "for already destroyed links" do
|
173
|
+
before { @link.destroy }
|
174
|
+
it "should really remove the dag link" do
|
175
|
+
@link.deleted_at.should_not == nil
|
176
|
+
subject
|
177
|
+
@user.links_as_child.count.should == 0
|
178
|
+
@user.links_as_child.now_and_in_the_past.count.should == 0
|
179
|
+
@user.parents.count.should == 0
|
180
|
+
DagLink.all.count.should == 0
|
181
|
+
DagLink.with_deleted.all.count.should == 0
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
138
185
|
|
139
186
|
end
|
140
187
|
|
metadata
CHANGED
@@ -1,137 +1,169 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_paranoid_dag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Sebastian Fiedlschuster
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-09-24 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rails
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '3.2'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.2'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: acts-as-dag
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - '>='
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '0'
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: rails3_acts_as_paranoid
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
|
-
- -
|
45
|
+
- - '>='
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: '0'
|
44
48
|
type: :runtime
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
47
55
|
- !ruby/object:Gem::Dependency
|
48
56
|
name: rake
|
49
|
-
requirement:
|
50
|
-
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
|
-
- -
|
59
|
+
- - '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
62
|
type: :development
|
56
63
|
prerelease: false
|
57
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
58
69
|
- !ruby/object:Gem::Dependency
|
59
70
|
name: bundler
|
60
|
-
requirement:
|
61
|
-
none: false
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
62
72
|
requirements:
|
63
|
-
- -
|
73
|
+
- - '>='
|
64
74
|
- !ruby/object:Gem::Version
|
65
75
|
version: '0'
|
66
76
|
type: :development
|
67
77
|
prerelease: false
|
68
|
-
version_requirements:
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rspec-rails
|
71
|
-
requirement:
|
72
|
-
none: false
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
73
86
|
requirements:
|
74
|
-
- -
|
87
|
+
- - '>='
|
75
88
|
- !ruby/object:Gem::Version
|
76
89
|
version: 2.8.0
|
77
90
|
type: :development
|
78
91
|
prerelease: false
|
79
|
-
version_requirements:
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 2.8.0
|
80
97
|
- !ruby/object:Gem::Dependency
|
81
98
|
name: guard
|
82
|
-
requirement:
|
83
|
-
none: false
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
84
100
|
requirements:
|
85
|
-
- - =
|
101
|
+
- - '='
|
86
102
|
- !ruby/object:Gem::Version
|
87
103
|
version: 1.0.1
|
88
104
|
type: :development
|
89
105
|
prerelease: false
|
90
|
-
version_requirements:
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.0.1
|
91
111
|
- !ruby/object:Gem::Dependency
|
92
112
|
name: rspec-rails
|
93
|
-
requirement:
|
94
|
-
none: false
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
95
114
|
requirements:
|
96
|
-
- - =
|
115
|
+
- - '='
|
97
116
|
- !ruby/object:Gem::Version
|
98
117
|
version: 2.10.0
|
99
118
|
type: :development
|
100
119
|
prerelease: false
|
101
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 2.10.0
|
102
125
|
- !ruby/object:Gem::Dependency
|
103
126
|
name: guard-rspec
|
104
|
-
requirement:
|
105
|
-
none: false
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
106
128
|
requirements:
|
107
|
-
- - =
|
129
|
+
- - '='
|
108
130
|
- !ruby/object:Gem::Version
|
109
131
|
version: 0.5.5
|
110
132
|
type: :development
|
111
133
|
prerelease: false
|
112
|
-
version_requirements:
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 0.5.5
|
113
139
|
- !ruby/object:Gem::Dependency
|
114
140
|
name: sqlite3
|
115
|
-
requirement:
|
116
|
-
none: false
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
117
142
|
requirements:
|
118
|
-
- -
|
143
|
+
- - '>='
|
119
144
|
- !ruby/object:Gem::Version
|
120
145
|
version: '0'
|
121
146
|
type: :development
|
122
147
|
prerelease: false
|
123
|
-
version_requirements:
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
124
153
|
- !ruby/object:Gem::Dependency
|
125
154
|
name: activerecord
|
126
|
-
requirement:
|
127
|
-
none: false
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
128
156
|
requirements:
|
129
|
-
- -
|
157
|
+
- - '>='
|
130
158
|
- !ruby/object:Gem::Version
|
131
159
|
version: '0'
|
132
160
|
type: :development
|
133
161
|
prerelease: false
|
134
|
-
version_requirements:
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
135
167
|
description: Combines `acts-as-dag` and `rails3_acts_as_dag` to order model instances
|
136
168
|
in a polymorphic directed acyclic graph and to be able to retrieve connections deleted
|
137
169
|
in the past.
|
@@ -158,33 +190,26 @@ files:
|
|
158
190
|
- spec/support/schema.rb
|
159
191
|
homepage: https://github.com/fiedl/acts_as_paranoid_dag
|
160
192
|
licenses: []
|
193
|
+
metadata: {}
|
161
194
|
post_install_message:
|
162
195
|
rdoc_options: []
|
163
196
|
require_paths:
|
164
197
|
- lib
|
165
198
|
required_ruby_version: !ruby/object:Gem::Requirement
|
166
|
-
none: false
|
167
199
|
requirements:
|
168
|
-
- -
|
200
|
+
- - '>='
|
169
201
|
- !ruby/object:Gem::Version
|
170
202
|
version: '0'
|
171
|
-
segments:
|
172
|
-
- 0
|
173
|
-
hash: 559936403
|
174
203
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
175
|
-
none: false
|
176
204
|
requirements:
|
177
|
-
- -
|
205
|
+
- - '>='
|
178
206
|
- !ruby/object:Gem::Version
|
179
207
|
version: '0'
|
180
|
-
segments:
|
181
|
-
- 0
|
182
|
-
hash: 559936403
|
183
208
|
requirements: []
|
184
209
|
rubyforge_project:
|
185
|
-
rubygems_version:
|
210
|
+
rubygems_version: 2.0.3
|
186
211
|
signing_key:
|
187
|
-
specification_version:
|
212
|
+
specification_version: 4
|
188
213
|
summary: Combines `acts-as-dag` and `rails3_acts_as_dag` to order model instances
|
189
214
|
in a polymorphic directed acyclic graph and to be able to retrieve connections deleted
|
190
215
|
in the past.
|