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.
@@ -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+