acts_as_paranoid 0.7.0 → 0.7.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/CHANGELOG.md +11 -0
- data/README.md +2 -2
- data/lib/acts_as_paranoid/core.rb +6 -4
- data/lib/acts_as_paranoid/version.rb +1 -1
- data/test/test_core.rb +29 -1
- data/test/test_helper.rb +24 -0
- metadata +30 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '096b348280798fe5ac4770a6c57bdb0731d2c5df9e7d361551cf065fe71f0b56'
|
4
|
+
data.tar.gz: 3d923644ebb1ccb3e06d9c04d8a0797f1677fcec880a188dd04ec8b19c9a957a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e677d8e734d9c6d72fd68feaad170f928fb159ea6a90e400632ce8365f8120a991eae46508bb04d641117fa2e24d3e38e9df6699c1d70b2cd994a4cf85c49379
|
7
|
+
data.tar.gz: b58a42cbf60696baffac255deb673476e5e339dbbe4bd1681959442ca2fc33a51f6d2e146755fc8f79539976d47c6244927969c82a86fdb70a553de44281e512
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,13 @@
|
|
2
2
|
|
3
3
|
Notable changes to this project will be documented in this file.
|
4
4
|
|
5
|
+
## 0.7.1
|
6
|
+
|
7
|
+
* Support Rails 6.1 ([#191], by [Matijs van Zuijlen][mvz])
|
8
|
+
* Support `belongs_to` with both `:touch` and `:counter_cache` options ([#208],
|
9
|
+
by [Matijs van Zuijlen][mvz] with [Paul Druziak][pauldruziak])
|
10
|
+
* Support Ruby 3.0 ([#209], by [Matijs van Zuijlen][mvz])
|
11
|
+
|
5
12
|
## 0.7.0
|
6
13
|
|
7
14
|
### Breaking changes
|
@@ -78,6 +85,7 @@ Notable changes to this project will be documented in this file.
|
|
78
85
|
[mvz]: https://github.com/mvz
|
79
86
|
[nedcampion]: https://github.com/nedcampion
|
80
87
|
[ri4a]: https://github.com/ri4a
|
88
|
+
[pauldruziak]: https://github.com/pauldruziak
|
81
89
|
[shadydealer]: https://github.com/shadydealer
|
82
90
|
[thebravoman]: https://github.com/thebravoman
|
83
91
|
[valeriecodes]: https://github.com/valeriecodes
|
@@ -85,6 +93,9 @@ Notable changes to this project will be documented in this file.
|
|
85
93
|
|
86
94
|
<!-- issues & pull requests -->
|
87
95
|
|
96
|
+
[#209]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/209
|
97
|
+
[#208]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/208
|
98
|
+
[#191]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/191
|
88
99
|
[#175]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/175
|
89
100
|
[#173]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/173
|
90
101
|
[#171]: https://github.com/ActsAsParanoid/acts_as_paranoid/pull/171
|
data/README.md
CHANGED
@@ -255,9 +255,9 @@ Paranoiac.create(name: 'foo').destroy
|
|
255
255
|
Paranoiac.with_deleted.first.deleted? #=> true
|
256
256
|
```
|
257
257
|
|
258
|
-
After the first call to
|
258
|
+
After the first call to `.destroy` the object is `deleted?`.
|
259
259
|
|
260
|
-
You can check if the object is fully destroyed with destroyed_fully
|
260
|
+
You can check if the object is fully destroyed with `destroyed_fully?` or `deleted_fully?`.
|
261
261
|
|
262
262
|
```ruby
|
263
263
|
Paranoiac.create(name: 'foo').destroy
|
@@ -138,7 +138,7 @@ module ActsAsParanoid
|
|
138
138
|
# Handle composite keys, otherwise we would just use
|
139
139
|
# `self.class.primary_key.to_sym => self.id`.
|
140
140
|
self.class
|
141
|
-
.delete_all!(
|
141
|
+
.delete_all!([Array(self.class.primary_key), Array(id)].transpose.to_h)
|
142
142
|
decrement_counters_on_associations
|
143
143
|
end
|
144
144
|
|
@@ -157,7 +157,7 @@ module ActsAsParanoid
|
|
157
157
|
# Handle composite keys, otherwise we would just use
|
158
158
|
# `self.class.primary_key.to_sym => self.id`.
|
159
159
|
self.class
|
160
|
-
.delete_all(
|
160
|
+
.delete_all([Array(self.class.primary_key), Array(id)].transpose.to_h)
|
161
161
|
decrement_counters_on_associations
|
162
162
|
end
|
163
163
|
|
@@ -272,15 +272,17 @@ module ActsAsParanoid
|
|
272
272
|
end
|
273
273
|
|
274
274
|
def update_counters_on_associations(method_sym)
|
275
|
-
return unless [:decrement_counter, :increment_counter].include? method_sym
|
276
|
-
|
277
275
|
each_counter_cached_association_reflection do |assoc_reflection|
|
276
|
+
reflection_options = assoc_reflection.options
|
277
|
+
next unless reflection_options[:counter_cache]
|
278
|
+
|
278
279
|
associated_object = send(assoc_reflection.name)
|
279
280
|
next unless associated_object
|
280
281
|
|
281
282
|
counter_cache_column = assoc_reflection.counter_cache_column
|
282
283
|
associated_object.class.send(method_sym, counter_cache_column,
|
283
284
|
associated_object.id)
|
285
|
+
associated_object.touch if reflection_options[:touch]
|
284
286
|
end
|
285
287
|
end
|
286
288
|
|
data/test/test_core.rb
CHANGED
@@ -539,16 +539,18 @@ class ParanoidTest < ParanoidBaseTest
|
|
539
539
|
assert_equal 1, ParanoidNoDoubleTapDestroysFully.with_deleted.where(id: ps).count
|
540
540
|
end
|
541
541
|
|
542
|
-
def
|
542
|
+
def test_decrement_counters_without_touch
|
543
543
|
paranoid_boolean = ParanoidBoolean.create!
|
544
544
|
paranoid_with_counter_cache = ParanoidWithCounterCache
|
545
545
|
.create!(paranoid_boolean: paranoid_boolean)
|
546
546
|
|
547
547
|
assert_equal 1, paranoid_boolean.paranoid_with_counter_caches_count
|
548
|
+
updated_at = paranoid_boolean.reload.updated_at
|
548
549
|
|
549
550
|
paranoid_with_counter_cache.destroy
|
550
551
|
|
551
552
|
assert_equal 0, paranoid_boolean.reload.paranoid_with_counter_caches_count
|
553
|
+
assert_equal updated_at, paranoid_boolean.reload.updated_at
|
552
554
|
end
|
553
555
|
|
554
556
|
def test_decrement_custom_counters
|
@@ -563,6 +565,32 @@ class ParanoidTest < ParanoidBaseTest
|
|
563
565
|
assert_equal 0, paranoid_boolean.reload.custom_counter_cache
|
564
566
|
end
|
565
567
|
|
568
|
+
def test_decrement_counters_with_touch
|
569
|
+
paranoid_boolean = ParanoidBoolean.create!
|
570
|
+
paranoid_with_counter_cache = ParanoidWithTouchAndCounterCache
|
571
|
+
.create!(paranoid_boolean: paranoid_boolean)
|
572
|
+
|
573
|
+
assert_equal 1, paranoid_boolean.paranoid_with_touch_and_counter_caches_count
|
574
|
+
updated_at = paranoid_boolean.reload.updated_at
|
575
|
+
|
576
|
+
paranoid_with_counter_cache.destroy
|
577
|
+
|
578
|
+
assert_equal 0, paranoid_boolean.reload.paranoid_with_touch_and_counter_caches_count
|
579
|
+
assert_not_equal updated_at, paranoid_boolean.reload.updated_at
|
580
|
+
end
|
581
|
+
|
582
|
+
def test_touch_belongs_to
|
583
|
+
paranoid_boolean = ParanoidBoolean.create!
|
584
|
+
paranoid_with_counter_cache = ParanoidWithTouch
|
585
|
+
.create!(paranoid_boolean: paranoid_boolean)
|
586
|
+
|
587
|
+
updated_at = paranoid_boolean.reload.updated_at
|
588
|
+
|
589
|
+
paranoid_with_counter_cache.destroy
|
590
|
+
|
591
|
+
assert_not_equal updated_at, paranoid_boolean.reload.updated_at
|
592
|
+
end
|
593
|
+
|
566
594
|
def test_destroy_with_optional_belongs_to_and_counter_cache
|
567
595
|
ps = ParanoidWithCounterCacheOnOptionalBelognsTo.create!
|
568
596
|
ps.destroy
|
data/test/test_helper.rb
CHANGED
@@ -9,6 +9,14 @@ rescue Bundler::BundlerError => e
|
|
9
9
|
exit e.status_code
|
10
10
|
end
|
11
11
|
|
12
|
+
if RUBY_ENGINE == "jruby"
|
13
|
+
# Workaround for issue in I18n/JRuby combo.
|
14
|
+
# See https://github.com/jruby/jruby/issues/6547 and
|
15
|
+
# https://github.com/ruby-i18n/i18n/issues/555
|
16
|
+
require "i18n/backend"
|
17
|
+
require "i18n/backend/simple"
|
18
|
+
end
|
19
|
+
|
12
20
|
require "simplecov"
|
13
21
|
SimpleCov.start do
|
14
22
|
enable_coverage :branch
|
@@ -16,6 +24,7 @@ end
|
|
16
24
|
|
17
25
|
require "acts_as_paranoid"
|
18
26
|
require "minitest/autorun"
|
27
|
+
require "minitest/focus"
|
19
28
|
|
20
29
|
# Silence deprecation halfway through the test
|
21
30
|
I18n.enforce_available_locales = true
|
@@ -41,6 +50,7 @@ def setup_db
|
|
41
50
|
t.boolean :is_deleted
|
42
51
|
t.integer :paranoid_time_id
|
43
52
|
t.integer :paranoid_with_counter_caches_count
|
53
|
+
t.integer :paranoid_with_touch_and_counter_caches_count
|
44
54
|
t.integer :custom_counter_cache
|
45
55
|
timestamps t
|
46
56
|
end
|
@@ -271,6 +281,8 @@ class ParanoidBoolean < ActiveRecord::Base
|
|
271
281
|
has_one :paranoid_has_one_dependant, dependent: :destroy
|
272
282
|
has_many :paranoid_with_counter_cache, dependent: :destroy
|
273
283
|
has_many :paranoid_with_custom_counter_cache, dependent: :destroy
|
284
|
+
has_many :paranoid_with_touch_and_counter_cache, dependent: :destroy
|
285
|
+
has_many :paranoid_with_touch, dependent: :destroy
|
274
286
|
end
|
275
287
|
|
276
288
|
class ParanoidString < ActiveRecord::Base
|
@@ -322,6 +334,18 @@ class ParanoidWithCounterCacheOnOptionalBelognsTo < ActiveRecord::Base
|
|
322
334
|
end
|
323
335
|
end
|
324
336
|
|
337
|
+
class ParanoidWithTouch < ActiveRecord::Base
|
338
|
+
self.table_name = "paranoid_with_counter_caches"
|
339
|
+
acts_as_paranoid
|
340
|
+
belongs_to :paranoid_boolean, touch: true
|
341
|
+
end
|
342
|
+
|
343
|
+
class ParanoidWithTouchAndCounterCache < ActiveRecord::Base
|
344
|
+
self.table_name = "paranoid_with_counter_caches"
|
345
|
+
acts_as_paranoid
|
346
|
+
belongs_to :paranoid_boolean, touch: true, counter_cache: true
|
347
|
+
end
|
348
|
+
|
325
349
|
class ParanoidHasManyDependant < ActiveRecord::Base
|
326
350
|
acts_as_paranoid
|
327
351
|
belongs_to :paranoid_time
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_paranoid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zachary Scott
|
8
8
|
- Goncalo Silva
|
9
9
|
- Rick Olson
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2021-03-14 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activerecord
|
@@ -76,22 +76,30 @@ dependencies:
|
|
76
76
|
name: minitest
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - "
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '4.0'
|
82
|
-
- - "<="
|
79
|
+
- - "~>"
|
83
80
|
- !ruby/object:Gem::Version
|
84
|
-
version: '
|
81
|
+
version: '5.14'
|
85
82
|
type: :development
|
86
83
|
prerelease: false
|
87
84
|
version_requirements: !ruby/object:Gem::Requirement
|
88
85
|
requirements:
|
89
|
-
- - "
|
86
|
+
- - "~>"
|
90
87
|
- !ruby/object:Gem::Version
|
91
|
-
version: '
|
92
|
-
|
88
|
+
version: '5.14'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: minitest-focus
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
93
94
|
- !ruby/object:Gem::Version
|
94
|
-
version:
|
95
|
+
version: 1.2.1
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: 1.2.1
|
95
103
|
- !ruby/object:Gem::Dependency
|
96
104
|
name: pry
|
97
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -140,14 +148,14 @@ dependencies:
|
|
140
148
|
requirements:
|
141
149
|
- - "~>"
|
142
150
|
- !ruby/object:Gem::Version
|
143
|
-
version:
|
151
|
+
version: 1.11.0
|
144
152
|
type: :development
|
145
153
|
prerelease: false
|
146
154
|
version_requirements: !ruby/object:Gem::Requirement
|
147
155
|
requirements:
|
148
156
|
- - "~>"
|
149
157
|
- !ruby/object:Gem::Version
|
150
|
-
version:
|
158
|
+
version: 1.11.0
|
151
159
|
- !ruby/object:Gem::Dependency
|
152
160
|
name: simplecov
|
153
161
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,7 +165,7 @@ dependencies:
|
|
157
165
|
version: 0.18.1
|
158
166
|
- - "<"
|
159
167
|
- !ruby/object:Gem::Version
|
160
|
-
version: 0.
|
168
|
+
version: 0.22.0
|
161
169
|
type: :development
|
162
170
|
prerelease: false
|
163
171
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -167,7 +175,7 @@ dependencies:
|
|
167
175
|
version: 0.18.1
|
168
176
|
- - "<"
|
169
177
|
- !ruby/object:Gem::Version
|
170
|
-
version: 0.
|
178
|
+
version: 0.22.0
|
171
179
|
description: Check the home page for more in-depth information.
|
172
180
|
email:
|
173
181
|
- e@zzak.io
|
@@ -195,7 +203,7 @@ homepage: https://github.com/ActsAsParanoid/acts_as_paranoid
|
|
195
203
|
licenses:
|
196
204
|
- MIT
|
197
205
|
metadata: {}
|
198
|
-
post_install_message:
|
206
|
+
post_install_message:
|
199
207
|
rdoc_options: []
|
200
208
|
require_paths:
|
201
209
|
- lib
|
@@ -210,16 +218,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
210
218
|
- !ruby/object:Gem::Version
|
211
219
|
version: '0'
|
212
220
|
requirements: []
|
213
|
-
rubygems_version: 3.
|
214
|
-
signing_key:
|
221
|
+
rubygems_version: 3.2.3
|
222
|
+
signing_key:
|
215
223
|
specification_version: 4
|
216
224
|
summary: Active Record plugin which allows you to hide and restore records without
|
217
225
|
actually deleting them.
|
218
226
|
test_files:
|
219
|
-
- test/
|
220
|
-
- test/test_inheritance.rb
|
227
|
+
- test/test_associations.rb
|
221
228
|
- test/test_core.rb
|
222
229
|
- test/test_default_scopes.rb
|
223
230
|
- test/test_helper.rb
|
231
|
+
- test/test_inheritance.rb
|
232
|
+
- test/test_relations.rb
|
224
233
|
- test/test_validations.rb
|
225
|
-
- test/test_associations.rb
|