rails_soft_deletable 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.
- data/lib/rails_soft_deletable.rb +21 -5
- data/lib/rails_soft_deletable/version.rb +1 -1
- metadata +22 -22
data/lib/rails_soft_deletable.rb
CHANGED
|
@@ -48,7 +48,11 @@ module RailsSoftDeletable
|
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
def destroy
|
|
51
|
-
|
|
51
|
+
if destroyed?
|
|
52
|
+
delete_or_soft_delete(true)
|
|
53
|
+
else
|
|
54
|
+
run_callbacks(:destroy) { delete_or_soft_delete(true) }
|
|
55
|
+
end
|
|
52
56
|
end
|
|
53
57
|
|
|
54
58
|
def delete
|
|
@@ -73,14 +77,19 @@ module RailsSoftDeletable
|
|
|
73
77
|
alias :restore :restore!
|
|
74
78
|
|
|
75
79
|
def destroyed?
|
|
76
|
-
|
|
80
|
+
value = send(soft_deletable_column)
|
|
81
|
+
value && value != 0
|
|
77
82
|
end
|
|
78
83
|
alias :deleted? :destroyed?
|
|
79
84
|
|
|
80
85
|
private
|
|
81
86
|
|
|
82
87
|
def delete_or_soft_delete(with_transaction = false)
|
|
83
|
-
destroyed?
|
|
88
|
+
if destroyed?
|
|
89
|
+
self.class.unscoped { hard_delete! }
|
|
90
|
+
else
|
|
91
|
+
touch_soft_deletable_column(with_transaction)
|
|
92
|
+
end
|
|
84
93
|
end
|
|
85
94
|
|
|
86
95
|
def touch_soft_deletable_column(with_transaction=false)
|
|
@@ -109,8 +118,8 @@ end
|
|
|
109
118
|
|
|
110
119
|
class ActiveRecord::Base
|
|
111
120
|
def self.acts_as_soft_deletable(options={})
|
|
112
|
-
alias :
|
|
113
|
-
alias :
|
|
121
|
+
alias :hard_destroy! :destroy
|
|
122
|
+
alias :hard_delete! :delete
|
|
114
123
|
include RailsSoftDeletable
|
|
115
124
|
class_attribute :soft_deletable_column
|
|
116
125
|
|
|
@@ -126,6 +135,13 @@ class ActiveRecord::Base
|
|
|
126
135
|
self.class.soft_deletable?
|
|
127
136
|
end
|
|
128
137
|
|
|
138
|
+
# Override the persisted method to allow for the paranoia gem.
|
|
139
|
+
# If a paranoid record is selected, then we only want to check
|
|
140
|
+
# if it's a new record, not if it is "destroyed".
|
|
141
|
+
def persisted?
|
|
142
|
+
soft_deletable? ? !new_record? : super
|
|
143
|
+
end
|
|
144
|
+
|
|
129
145
|
private
|
|
130
146
|
|
|
131
147
|
def soft_deletable_column
|
metadata
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rails_soft_deletable
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.3
|
|
4
5
|
prerelease:
|
|
5
|
-
version: 0.0.2
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- Quan Nguyen
|
|
@@ -14,84 +14,84 @@ date: 2013-11-21 00:00:00.000000000 Z
|
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: activerecord
|
|
17
|
-
|
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
|
18
18
|
none: false
|
|
19
19
|
requirements:
|
|
20
20
|
- - '='
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
22
|
version: 3.2.11
|
|
23
|
-
|
|
23
|
+
type: :runtime
|
|
24
|
+
prerelease: false
|
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
24
26
|
none: false
|
|
25
27
|
requirements:
|
|
26
28
|
- - '='
|
|
27
29
|
- !ruby/object:Gem::Version
|
|
28
30
|
version: 3.2.11
|
|
29
|
-
type: :runtime
|
|
30
|
-
prerelease: false
|
|
31
31
|
- !ruby/object:Gem::Dependency
|
|
32
32
|
name: bundler
|
|
33
|
-
|
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
|
34
34
|
none: false
|
|
35
35
|
requirements:
|
|
36
36
|
- - ~>
|
|
37
37
|
- !ruby/object:Gem::Version
|
|
38
38
|
version: '1.3'
|
|
39
|
-
|
|
39
|
+
type: :development
|
|
40
|
+
prerelease: false
|
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
40
42
|
none: false
|
|
41
43
|
requirements:
|
|
42
44
|
- - ~>
|
|
43
45
|
- !ruby/object:Gem::Version
|
|
44
46
|
version: '1.3'
|
|
45
|
-
type: :development
|
|
46
|
-
prerelease: false
|
|
47
47
|
- !ruby/object:Gem::Dependency
|
|
48
48
|
name: rake
|
|
49
|
-
|
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
|
50
50
|
none: false
|
|
51
51
|
requirements:
|
|
52
52
|
- - ! '>='
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '0'
|
|
55
|
-
|
|
55
|
+
type: :development
|
|
56
|
+
prerelease: false
|
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
56
58
|
none: false
|
|
57
59
|
requirements:
|
|
58
60
|
- - ! '>='
|
|
59
61
|
- !ruby/object:Gem::Version
|
|
60
62
|
version: '0'
|
|
61
|
-
type: :development
|
|
62
|
-
prerelease: false
|
|
63
63
|
- !ruby/object:Gem::Dependency
|
|
64
64
|
name: rspec
|
|
65
|
-
|
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
|
66
66
|
none: false
|
|
67
67
|
requirements:
|
|
68
68
|
- - ~>
|
|
69
69
|
- !ruby/object:Gem::Version
|
|
70
70
|
version: 3.0.0.beta1
|
|
71
|
-
|
|
71
|
+
type: :development
|
|
72
|
+
prerelease: false
|
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
72
74
|
none: false
|
|
73
75
|
requirements:
|
|
74
76
|
- - ~>
|
|
75
77
|
- !ruby/object:Gem::Version
|
|
76
78
|
version: 3.0.0.beta1
|
|
77
|
-
type: :development
|
|
78
|
-
prerelease: false
|
|
79
79
|
- !ruby/object:Gem::Dependency
|
|
80
80
|
name: debugger
|
|
81
|
-
|
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
|
82
82
|
none: false
|
|
83
83
|
requirements:
|
|
84
84
|
- - ~>
|
|
85
85
|
- !ruby/object:Gem::Version
|
|
86
86
|
version: '1.6'
|
|
87
|
-
|
|
87
|
+
type: :development
|
|
88
|
+
prerelease: false
|
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
88
90
|
none: false
|
|
89
91
|
requirements:
|
|
90
92
|
- - ~>
|
|
91
93
|
- !ruby/object:Gem::Version
|
|
92
94
|
version: '1.6'
|
|
93
|
-
type: :development
|
|
94
|
-
prerelease: false
|
|
95
95
|
description: Soft deletable for ActiveRecord on Rails 3+.
|
|
96
96
|
email:
|
|
97
97
|
- quan@listia.com
|
|
@@ -127,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
127
127
|
version: '0'
|
|
128
128
|
requirements: []
|
|
129
129
|
rubyforge_project:
|
|
130
|
-
rubygems_version: 1.8.
|
|
130
|
+
rubygems_version: 1.8.24
|
|
131
131
|
signing_key:
|
|
132
132
|
specification_version: 3
|
|
133
133
|
summary: Soft deletable for ActiveRecord on Rails 3+
|