rails_soft_deletable 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -48,7 +48,11 @@ module RailsSoftDeletable
48
48
  end
49
49
 
50
50
  def destroy
51
- run_callbacks(:destroy) { delete_or_soft_delete(true) }
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
- send(soft_deletable_column) && send(soft_deletable_column) > 0
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? ? destroy! : touch_soft_deletable_column(with_transaction)
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 :destroy! :destroy
113
- alias :delete! :delete
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
@@ -1,3 +1,3 @@
1
1
  module RailsSoftDeletable
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
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
- version_requirements: !ruby/object:Gem::Requirement
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
- requirement: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- requirement: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- requirement: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- requirement: !ruby/object:Gem::Requirement
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
- version_requirements: !ruby/object:Gem::Requirement
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
- requirement: !ruby/object:Gem::Requirement
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.25
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+