delete_soft 0.0.1 → 0.0.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.
- data/delete_soft.gemspec +0 -2
- data/lib/class_methods.rb +13 -6
- data/lib/delete_soft/version.rb +1 -1
- data/lib/instance_methods.rb +0 -1
- data/test/db.sqlite3 +0 -0
- data/test/delete_softly_test.rb +12 -2
- metadata +8 -24
data/delete_soft.gemspec
CHANGED
@@ -13,8 +13,6 @@ Gem::Specification.new do |s|
|
|
13
13
|
|
14
14
|
s.rubyforge_project = "delete_soft"
|
15
15
|
|
16
|
-
s.add_dependency('squeel', '>= 0.9.3')
|
17
|
-
|
18
16
|
s.add_development_dependency('sqlite3', ['>= 1.3.4'])
|
19
17
|
s.add_development_dependency('activerecord', ['>= 3.1.0'])
|
20
18
|
s.add_development_dependency('rake', ['0.9.2'])
|
data/lib/class_methods.rb
CHANGED
@@ -9,8 +9,13 @@ module DeleteSoftly
|
|
9
9
|
# Will result in:
|
10
10
|
# Item.at_time(DateTime.parse('2010-01-01')) #=> (SELECT "items".* FROM "items" WHERE (((("items"."deleted_at" > '2010-01-01 00:00:00') OR ("items"."deleted_at" IS NULL)) AND ("items"."created_at" < '2010-01-01 00:00:00')))
|
11
11
|
def at_time(date = Time.now.utc)
|
12
|
-
with_deleted
|
12
|
+
with_deleted do
|
13
|
+
where('(deleted_at > :date OR deleted_at IS NULL) AND created_at < :date', {:date => date})
|
14
|
+
end
|
13
15
|
end
|
16
|
+
|
17
|
+
"created_at >= :start_date AND created_at <= :end_date"
|
18
|
+
|
14
19
|
alias_method :at_date, :at_time
|
15
20
|
|
16
21
|
# Give the currently active items. When delete_soflty is added this is invoked by default
|
@@ -26,13 +31,13 @@ module DeleteSoftly
|
|
26
31
|
# Item.all #=> SELECT "items".* FROM "items"
|
27
32
|
# Item.active #=> SELECT "items".* FROM "items" WHERE ("items"."deleted_at" IS NULL)
|
28
33
|
def active
|
29
|
-
where
|
34
|
+
where('deleted_at IS NULL')
|
30
35
|
end
|
31
36
|
|
32
37
|
# Same as active, but not to be overwritten. Active might become with disabled => false
|
33
38
|
# or something like that. Without deleted should remain intact
|
34
39
|
def without_deleted
|
35
|
-
where
|
40
|
+
where('deleted_at IS NULL')
|
36
41
|
end
|
37
42
|
|
38
43
|
# Include deleted items when performing queries
|
@@ -50,11 +55,13 @@ module DeleteSoftly
|
|
50
55
|
# IHaveManyItems.first.items #=> SELECT "items".* FROM "items" WHERE ("items"."deleted_at" IS NULL) AND ("items".i_have_many_items_id = 1) ORDER BY "items"."content"
|
51
56
|
# IHaveManyItems.first.items.with_deleted #=> SELECT "items".* FROM "items" WHERE ("items".i_have_many_items_id = 1) ORDER BY "items"."content"
|
52
57
|
def with_deleted(&block)
|
53
|
-
unscoped
|
58
|
+
unscoped(&block)
|
54
59
|
end
|
55
|
-
|
60
|
+
|
56
61
|
def deleted
|
57
|
-
with_deleted
|
62
|
+
with_deleted do
|
63
|
+
where( "deleted_at NOT NULL" )
|
64
|
+
end
|
58
65
|
end
|
59
66
|
|
60
67
|
# Support for paper_trail if it is installed as well. Then you can use:
|
data/lib/delete_soft/version.rb
CHANGED
data/lib/instance_methods.rb
CHANGED
data/test/db.sqlite3
CHANGED
Binary file
|
data/test/delete_softly_test.rb
CHANGED
@@ -17,10 +17,11 @@ class DeleteSoftlyTest < ActiveSupport::TestCase
|
|
17
17
|
@post2_id = @post2.id
|
18
18
|
|
19
19
|
end
|
20
|
+
|
20
21
|
test "two records available" do
|
21
22
|
assert_equal 2, Post.count
|
22
23
|
end
|
23
|
-
|
24
|
+
|
24
25
|
test "destroy count test" do
|
25
26
|
@post1.destroy
|
26
27
|
assert_equal 1, Post.count
|
@@ -47,10 +48,19 @@ class DeleteSoftlyTest < ActiveSupport::TestCase
|
|
47
48
|
assert_equal [@post2], Post.without_deleted
|
48
49
|
assert_equal [@post1, @post2], Post.at_time(t)
|
49
50
|
end
|
50
|
-
|
51
|
+
|
51
52
|
test "other default scopes" do
|
52
53
|
assert_equal 2, Comment.count
|
53
54
|
@comment2_1.destroy
|
54
55
|
assert_equal 1, Comment.count
|
55
56
|
end
|
57
|
+
|
58
|
+
test "revive" do
|
59
|
+
assert_equal 2, Post.without_deleted.count
|
60
|
+
@post1.destroy
|
61
|
+
assert_equal 1, Post.without_deleted.count
|
62
|
+
@post1.revive
|
63
|
+
assert_equal 2, Post.without_deleted.count
|
64
|
+
end
|
65
|
+
|
56
66
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delete_soft
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Orban Botond
|
@@ -21,22 +21,6 @@ dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
|
-
requirements:
|
26
|
-
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 61
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
- 9
|
32
|
-
- 3
|
33
|
-
version: 0.9.3
|
34
|
-
type: :runtime
|
35
|
-
name: squeel
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
prerelease: false
|
39
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
40
24
|
none: false
|
41
25
|
requirements:
|
42
26
|
- - ">="
|
@@ -49,10 +33,10 @@ dependencies:
|
|
49
33
|
version: 1.3.4
|
50
34
|
type: :development
|
51
35
|
name: sqlite3
|
52
|
-
version_requirements: *
|
36
|
+
version_requirements: *id001
|
53
37
|
- !ruby/object:Gem::Dependency
|
54
38
|
prerelease: false
|
55
|
-
requirement: &
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
56
40
|
none: false
|
57
41
|
requirements:
|
58
42
|
- - ">="
|
@@ -65,10 +49,10 @@ dependencies:
|
|
65
49
|
version: 3.1.0
|
66
50
|
type: :development
|
67
51
|
name: activerecord
|
68
|
-
version_requirements: *
|
52
|
+
version_requirements: *id002
|
69
53
|
- !ruby/object:Gem::Dependency
|
70
54
|
prerelease: false
|
71
|
-
requirement: &
|
55
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
72
56
|
none: false
|
73
57
|
requirements:
|
74
58
|
- - "="
|
@@ -81,7 +65,7 @@ dependencies:
|
|
81
65
|
version: 0.9.2
|
82
66
|
type: :development
|
83
67
|
name: rake
|
84
|
-
version_requirements: *
|
68
|
+
version_requirements: *id003
|
85
69
|
description: A gem which adds soft delete functionality
|
86
70
|
email:
|
87
71
|
- orbanbotond@gmail.com
|