acts_as_removable 0.9.1 → 0.9.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 +4 -4
- data/LICENSE +1 -1
- data/README.md +18 -1
- data/lib/acts_as_removable/version.rb +1 -1
- data/lib/acts_as_removable.rb +15 -7
- data/spec/acts_as_removable_spec.rb +28 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d64a4e7fa07f7ffa3872fc9e3e39c86b1b6b1cc4
|
4
|
+
data.tar.gz: 37b0cad5a652328df6dc52fdd80879b16cca0253
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d73905579c97e93fe7f7743fb4304b7729116830b8f19af1ba793e87c1f5bc6aaa66cc0fff336ac1f2e3820efc01700b10b11b7fec49b68dedcf6996b226dd7
|
7
|
+
data.tar.gz: 23123253e8b3e88c184f47066b6d9948ced41868beeb5d4c8b2cfb72b5cdc5b454079818ab6ddb04c3d545ea2966560f2feaaa92d933b413af397cb708d9f19b
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -19,7 +19,7 @@ Or install it yourself as:
|
|
19
19
|
## Usage
|
20
20
|
|
21
21
|
```ruby
|
22
|
-
# a column removed_at of type timestamp is required
|
22
|
+
# a column removed_at of type timestamp is required
|
23
23
|
class MyModel < ActiveRecord::Base
|
24
24
|
acts_as_removable
|
25
25
|
end
|
@@ -37,6 +37,13 @@ class MyModel < ActiveRecord::Base
|
|
37
37
|
end
|
38
38
|
```
|
39
39
|
|
40
|
+
It's possible to skip the default_scope:
|
41
|
+
```ruby
|
42
|
+
class MyModel < ActiveRecord::Base
|
43
|
+
acts_as_removable without_default_scope: true
|
44
|
+
end
|
45
|
+
```
|
46
|
+
|
40
47
|
And you can use callbacks:
|
41
48
|
```ruby
|
42
49
|
class MyModel < ActiveRecord::Base
|
@@ -50,6 +57,15 @@ class MyModel < ActiveRecord::Base
|
|
50
57
|
def after_remove_method
|
51
58
|
puts "After removing record"
|
52
59
|
end
|
60
|
+
|
61
|
+
before_unremove do |r|
|
62
|
+
puts "Before unremoving record"
|
63
|
+
end
|
64
|
+
|
65
|
+
after_unremove :after_unremove_method
|
66
|
+
def after_unremove_method
|
67
|
+
puts "After unremoving record"
|
68
|
+
end
|
53
69
|
end
|
54
70
|
```
|
55
71
|
|
@@ -57,6 +73,7 @@ end
|
|
57
73
|
|
58
74
|
* [](https://travis-ci.org/SICSoftwareGmbH/acts_as_removable)
|
59
75
|
* [](https://gemnasium.com/SICSoftwareGmbH/acts_as_removable)
|
76
|
+
* [](https://codeclimate.com/github/SICSoftwareGmbH/acts_as_removable)
|
60
77
|
|
61
78
|
## Contributing
|
62
79
|
|
data/lib/acts_as_removable.rb
CHANGED
@@ -32,7 +32,7 @@ module ActsAsRemovable
|
|
32
32
|
scope :actives, -> {unscoped.where("#{self.table_name}.#{self._acts_as_removable_column_name} IS NULL")}
|
33
33
|
default_scope -> {actives} unless options[:without_default_scope]
|
34
34
|
|
35
|
-
define_callbacks :remove
|
35
|
+
define_callbacks :remove, :unremove
|
36
36
|
|
37
37
|
def self.before_remove(*args, &block)
|
38
38
|
set_callback :remove, :before, *args, &block
|
@@ -42,30 +42,38 @@ module ActsAsRemovable
|
|
42
42
|
set_callback :remove, :after, *args, &block
|
43
43
|
end
|
44
44
|
|
45
|
+
def self.before_unremove(*args, &block)
|
46
|
+
set_callback :unremove, :before, *args, &block
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.after_unremove(*args, &block)
|
50
|
+
set_callback :unremove, :after, *args, &block
|
51
|
+
end
|
52
|
+
|
45
53
|
def removed?
|
46
54
|
self.send(self.class._acts_as_removable_column_name).present?
|
47
55
|
end
|
48
56
|
|
49
57
|
def remove(options={})
|
50
|
-
_update_remove_attribute(Time.now, false, options)
|
58
|
+
_update_remove_attribute(:remove, Time.now, false, options)
|
51
59
|
end
|
52
60
|
|
53
61
|
def remove!(options={})
|
54
|
-
_update_remove_attribute(Time.now, true, options)
|
62
|
+
_update_remove_attribute(:remove, Time.now, true, options)
|
55
63
|
end
|
56
64
|
|
57
65
|
def unremove(options={})
|
58
|
-
_update_remove_attribute(nil, false, options)
|
66
|
+
_update_remove_attribute(:unremove, nil, false, options)
|
59
67
|
end
|
60
68
|
|
61
69
|
def unremove!(options={})
|
62
|
-
_update_remove_attribute(nil, true, options)
|
70
|
+
_update_remove_attribute(:unremove, nil, true, options)
|
63
71
|
end
|
64
72
|
|
65
73
|
private
|
66
74
|
|
67
|
-
def _update_remove_attribute(value, with_bang=false, options={})
|
68
|
-
run_callbacks
|
75
|
+
def _update_remove_attribute(callback, value, with_bang=false, options={})
|
76
|
+
run_callbacks callback.to_sym do
|
69
77
|
self.send("#{self.class._acts_as_removable_column_name}=", value)
|
70
78
|
with_bang ? self.save!(options) : self.save(options)
|
71
79
|
end
|
@@ -3,12 +3,19 @@ require 'spec_helper'
|
|
3
3
|
describe 'acts_as_removable' do
|
4
4
|
class MyModel < ActiveRecord::Base
|
5
5
|
acts_as_removable
|
6
|
-
attr_accessor :
|
6
|
+
attr_accessor :callback_before_remove, :callback_after_remove, :callback_before_unremove, :callback_after_unremove
|
7
7
|
before_remove do |r|
|
8
|
-
r.
|
8
|
+
r.callback_before_remove = true
|
9
9
|
end
|
10
10
|
after_remove do |r|
|
11
|
-
r.
|
11
|
+
r.callback_after_remove = true
|
12
|
+
end
|
13
|
+
|
14
|
+
before_unremove do |ur|
|
15
|
+
ur.callback_before_unremove = true
|
16
|
+
end
|
17
|
+
after_unremove do |ur|
|
18
|
+
ur.callback_after_unremove = true
|
12
19
|
end
|
13
20
|
end
|
14
21
|
|
@@ -68,10 +75,24 @@ describe 'acts_as_removable' do
|
|
68
75
|
|
69
76
|
it "test callbacks" do
|
70
77
|
r = MyModel.create!
|
71
|
-
r.
|
72
|
-
r.
|
78
|
+
r.callback_before_remove.should be_false
|
79
|
+
r.callback_after_remove.should be_false
|
80
|
+
r.callback_before_unremove.should be_false
|
81
|
+
r.callback_after_unremove.should be_false
|
82
|
+
|
73
83
|
r.remove
|
74
|
-
|
75
|
-
r.
|
84
|
+
|
85
|
+
r.callback_before_remove.should be_true
|
86
|
+
r.callback_after_remove.should be_true
|
87
|
+
r.callback_before_unremove.should be_false
|
88
|
+
r.callback_after_unremove.should be_false
|
89
|
+
|
90
|
+
r.unremove
|
91
|
+
|
92
|
+
r.callback_before_remove.should be_true
|
93
|
+
r.callback_after_remove.should be_true
|
94
|
+
r.callback_before_unremove.should be_true
|
95
|
+
r.callback_after_unremove.should be_true
|
96
|
+
|
76
97
|
end
|
77
98
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_removable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Schwab
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-07-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|