persistent_record 0.1.4 → 0.2.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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NjM3MzQ2MDk2MmY2NTAwMDYzZjQxMWI3YzkwYWIwYTcwZWY2MDA2Yg==
5
- data.tar.gz: !binary |-
6
- Nzg2MjM3YTY0MzhjMzAyNzdkNWU1YWZiZjFmOWE3Yjc0NzZjNjhlMQ==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- M2NhOWVkMGNmNzJjMTJjMDVlMTFlMGIwMzUyNGEzMWUwZDZjMzlmNjg2OGQx
10
- NzA3ZjY2ZjI1MGZkMmMxYTlhYTc1NDA3ZDA2YzU5NDg0NTEzMzdiYzBiZTY0
11
- YmM1ODc4ZDhmNDIxODYzNWE0MjJjYWRiMDk4MjRmMDkwMDQzN2Q=
12
- data.tar.gz: !binary |-
13
- YjUyYzVkMmNjNDc5M2RlNmZjMDkxZGIwY2I4Y2YyZjAyMzZlYmQ3Mjg1OThm
14
- NmFhOGQ3Yjc2NTQwZjgyMjY1MDM2OWEwNTI5MDkwZWQ3ZjhiZjE4ZDk4NTZm
15
- MWI5NWQ4ZjVhMzI2MTUwNTY3ODBhMzVjYWNhNDRkNmYwYThkZTE=
2
+ SHA1:
3
+ metadata.gz: 03c628082ab95e937cbd6c019a4aea9d955fd691
4
+ data.tar.gz: d90074909b0ecc7ae829b412399a62e33c656ef5
5
+ SHA512:
6
+ metadata.gz: 9e072f141558dc266742681781377612fcc555b3b3f259a057976ad5554b2ff3a5ad33eb4a4e87f82a638751bc71148d7a16ee20e6651193993d474ee131b6bf
7
+ data.tar.gz: 80e662d88496637c335616f8a4749d62f1192fbcc51bc166c617446dfd1bafbf789516937028b2d8b3f7767785a24e9d43cc6c45fa7c8463460a1cb5e8f891d4
data/README.md CHANGED
@@ -13,5 +13,10 @@ Migrate your models by adding a "deleted_at" timestamp, `rails generate migratio
13
13
  class YourModel < ActiveRecord::Base
14
14
 
15
15
  acts_as_persistent
16
-
17
- end
16
+
17
+ end
18
+
19
+
20
+ ## Deprecation Warning
21
+
22
+ * `zap!` is now an alias for `force_destroy!`, will be removed in 1.0.
@@ -1,3 +1,3 @@
1
1
  module PersistentRecord
2
- VERSION = '0.1.4'
2
+ VERSION = '0.2.2'
3
3
  end
@@ -1,8 +1,6 @@
1
1
  require "persistent_record/version"
2
2
  require 'active_record' unless defined? ActiveRecord
3
3
 
4
-
5
-
6
4
  module PersistentRecord
7
5
 
8
6
  def self.included(source)
@@ -28,9 +26,6 @@ module PersistentRecord
28
26
  with_discarded.where.not(record_deleted_at_column => nil)
29
27
  end
30
28
 
31
- alias :discarded :with_discarded
32
- alias :discarded! :only_discarded
33
-
34
29
  def restore(id, options = {})
35
30
  if id.is_a?(Array)
36
31
  id.map { |one_id| restore(one_id, options) }
@@ -42,25 +37,20 @@ module PersistentRecord
42
37
  end
43
38
 
44
39
  module Callbacks
45
-
46
40
  def self.extended(source)
47
-
48
- source.define_callbacks :restore
49
-
50
- source.define_singleton_method("before_restore") do |*args, &block|
51
- set_callback(:restore, :before, *args, &block)
52
- end
53
-
54
- source.define_singleton_method("around_restore") do |*args, &block|
55
- set_callback(:restore, :around, *args, &block)
56
- end
57
-
58
- source.define_singleton_method("after_restore") do |*args, &block|
59
- set_callback(:restore, :after, *args, &block)
41
+ [:restore, :force_destroy].each do |callback_name|
42
+ source.define_callbacks callback_name
43
+ source.define_singleton_method("before_#{callback_name}") do |*args, &block|
44
+ set_callback(callback_name, :before, *args, &block)
45
+ end
46
+ source.define_singleton_method("around_#{callback_name}") do |*args, &block|
47
+ set_callback(callback_name, :around, *args, &block)
48
+ end
49
+ source.define_singleton_method("after_#{callback_name}") do |*args, &block|
50
+ set_callback(callback_name, :after, *args, &block)
51
+ end
60
52
  end
61
-
62
53
  end
63
-
64
54
  end
65
55
 
66
56
  def destroy
@@ -94,6 +84,24 @@ module PersistentRecord
94
84
  !!send(record_deleted_at_column)
95
85
  end
96
86
 
87
+ def force_destroy!
88
+ transaction do
89
+ run_callbacks(:force_destroy) do
90
+ dependent_reflections = self.class.reflections.select do |name, reflection|
91
+ reflection.options[:dependent] == :destroy
92
+ end
93
+ if dependent_reflections.any?
94
+ dependent_reflections.each do |name|
95
+ associated_records = self.send(name)
96
+ associated_records = associated_records.with_discarded if associated_records.respond_to?(:with_discarded)
97
+ associated_records.each(&:force_destroy!)
98
+ end
99
+ end
100
+ default_destroy
101
+ end
102
+ end
103
+ end
104
+
97
105
  private
98
106
 
99
107
  def touch_record_deleted_at_column(with_transaction = false)
@@ -107,11 +115,9 @@ module PersistentRecord
107
115
  end
108
116
 
109
117
  def restore_associated_records
110
-
111
118
  destroyed_associations = self.class.reflect_on_all_associations.select do |association|
112
119
  association.options[:dependent] == :destroy
113
120
  end
114
-
115
121
  destroyed_associations.each do |association|
116
122
  association_data = send(association.name)
117
123
  unless association_data.nil?
@@ -124,7 +130,6 @@ module PersistentRecord
124
130
  end
125
131
  end
126
132
  end
127
-
128
133
  end
129
134
 
130
135
  end
@@ -133,22 +138,7 @@ class ActiveRecord::Base
133
138
 
134
139
  def self.acts_as_persistent(options = {})
135
140
 
136
- alias :destroy! :destroy
137
- alias :delete! :delete
138
-
139
- def zap!
140
- dependent_reflections = self.reflections.select do |name, reflection|
141
- reflection.options[:dependent] == :destroy
142
- end
143
- if dependent_reflections.any?
144
- dependent_reflections.each do |name|
145
- associated_records = self.send(name)
146
- associated_records = associated_records.with_discarded if associated_records.respond_to?(:with_discarded)
147
- associated_records.each(&:zap!)
148
- end
149
- end
150
- destroy!
151
- end
141
+ alias_method :default_destroy, :destroy
152
142
 
153
143
  include PersistentRecord
154
144
 
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: persistent_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robin Grass
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-04 00:00:00.000000000 Z
11
+ date: 2016-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '4.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  description: Introduces soft deletions for ActiveRecord.
@@ -59,7 +59,7 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - .gitignore
62
+ - ".gitignore"
63
63
  - DOCUMENTATION.md
64
64
  - Gemfile
65
65
  - LICENSE.txt
@@ -78,17 +78,17 @@ require_paths:
78
78
  - lib
79
79
  required_ruby_version: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ! '>='
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  required_rubygems_version: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - ! '>='
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
89
  requirements: []
90
90
  rubyforge_project:
91
- rubygems_version: 2.0.7
91
+ rubygems_version: 2.5.1
92
92
  signing_key:
93
93
  specification_version: 4
94
94
  summary: Introduces soft deletions for ActiveRecord.