archive_2s 0.0.3 → 0.0.4
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/archive_2s/version.rb +1 -1
- data/lib/archive_2s.rb +21 -17
- data/spec/archive_2s_spec.rb +15 -0
- metadata +3 -3
data/lib/archive_2s/version.rb
CHANGED
data/lib/archive_2s.rb
CHANGED
@@ -27,23 +27,7 @@ module Archive2s
|
|
27
27
|
if self.archive_2s_args[:include_by_default]
|
28
28
|
singleton.module_eval do
|
29
29
|
def find(*args)
|
30
|
-
|
31
|
-
#might as well try AR first
|
32
|
-
super.find(*args)
|
33
|
-
rescue Exception => e
|
34
|
-
#can only fetch archived by ids so don't attempt if there were extra args
|
35
|
-
if args.flatten! && args.length != args.select{|i| i == i.to_i}.length
|
36
|
-
raise e
|
37
|
-
else
|
38
|
-
items = self.all(:conditions => ["id IN (#{(['?'] * args.length).join(',')})", *args])
|
39
|
-
items += [self.find_archived(*args - items.collect(&:id))].flatten
|
40
|
-
if args.length == items.length
|
41
|
-
items
|
42
|
-
else
|
43
|
-
raise e
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
30
|
+
self.find_with_archived(*args)
|
47
31
|
end
|
48
32
|
end
|
49
33
|
end
|
@@ -88,6 +72,26 @@ module Archive2s
|
|
88
72
|
archived_models.first
|
89
73
|
end
|
90
74
|
end
|
75
|
+
|
76
|
+
def find_with_archived(*args)
|
77
|
+
begin
|
78
|
+
#might as well try AR first
|
79
|
+
super.find(*args)
|
80
|
+
rescue Exception => e
|
81
|
+
#can only fetch archived by ids so don't attempt if there were extra args
|
82
|
+
if args.flatten! && args.length != args.select{|i| i == i.to_i}.length
|
83
|
+
raise e
|
84
|
+
else
|
85
|
+
items = self.all(:conditions => ["id IN (#{(['?'] * args.length).join(',')})", *args])
|
86
|
+
items += [self.find_archived(*args - items.collect(&:id))].flatten
|
87
|
+
if args.length == items.length
|
88
|
+
items
|
89
|
+
else
|
90
|
+
raise e
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
91
95
|
end
|
92
96
|
end
|
93
97
|
|
data/spec/archive_2s_spec.rb
CHANGED
@@ -71,6 +71,17 @@ describe Archive2s do
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
+
it "find_with_archived should return archived items too" do
|
75
|
+
item_one = Item.create(:name => 'Item One', :description => 'foo')
|
76
|
+
item_two = Item.create(:name => 'Item Two', :description => 'bar')
|
77
|
+
ids = [item_one.id, item_two.id]
|
78
|
+
item_two.destroy
|
79
|
+
items = Item.find_with_archived(ids)
|
80
|
+
|
81
|
+
items.length.should == 2
|
82
|
+
items.collect(&:id).include?(ids.last).should be_true
|
83
|
+
end
|
84
|
+
|
74
85
|
it "should archive the default to_s" do
|
75
86
|
thing_one = Thing.create(:name => 'Thing One', :description => 'foo')
|
76
87
|
t_to_s = thing_one.to_s
|
@@ -94,6 +105,10 @@ describe Archive2s do
|
|
94
105
|
archived_thing.readonly?.should be_true
|
95
106
|
end
|
96
107
|
|
108
|
+
it "should not error when no params are passed in" do
|
109
|
+
lambda{class Foo < ActiveRecord::Base;archive_2s;end}.should_not raise_error
|
110
|
+
end
|
111
|
+
|
97
112
|
#reload should do nothing, not sure how to test that though
|
98
113
|
|
99
114
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: archive_2s
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- SmashTank Apps, LLC
|