persistent_record 0.1.4 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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.