paper_trail 2.6.1 → 2.6.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/.gitignore +1 -0
- data/README.md +2 -0
- data/lib/paper_trail/has_paper_trail.rb +6 -0
- data/lib/paper_trail/version.rb +7 -1
- data/lib/paper_trail/version_number.rb +1 -1
- data/test/unit/model_test.rb +18 -0
- data/test/unit/timestamp_test.rb +5 -1
- metadata +3 -3
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -717,6 +717,8 @@ Many thanks to:
|
|
717
717
|
* [Nikita Cernovs](https://github.com/nikitachernov)
|
718
718
|
* [Jason Noble](https://github.com/jasonnoble)
|
719
719
|
* [Jared Mehle](https://github.com/jrmehle)
|
720
|
+
* [Eric Schwartz](https://github.com/emschwar)
|
721
|
+
|
720
722
|
|
721
723
|
|
722
724
|
## Inspirations
|
@@ -108,6 +108,12 @@ module PaperTrail
|
|
108
108
|
v ? v.reify(reify_options) : self
|
109
109
|
end
|
110
110
|
|
111
|
+
# Returns the objects (not Versions) as they were between the given times.
|
112
|
+
def versions_between(start_time, end_time, reify_options={})
|
113
|
+
versions = send(self.class.versions_association_name).between(start_time, end_time)
|
114
|
+
versions.collect { |version| version_at(version.send PaperTrail.timestamp_field) }
|
115
|
+
end
|
116
|
+
|
111
117
|
# Returns the object (not a Version) as it was most recently.
|
112
118
|
def previous_version
|
113
119
|
preceding_version = source_version ? source_version.previous : send(self.class.versions_association_name).last
|
data/lib/paper_trail/version.rb
CHANGED
@@ -17,7 +17,13 @@ class Version < ActiveRecord::Base
|
|
17
17
|
|
18
18
|
scope :following, lambda { |timestamp|
|
19
19
|
# TODO: is this :order necessary, considering its presence on the has_many :versions association?
|
20
|
-
where(["#{PaperTrail.timestamp_field} > ?", timestamp]).
|
20
|
+
where(["#{PaperTrail.timestamp_field} > ?", timestamp]).
|
21
|
+
order("#{PaperTrail.timestamp_field} ASC, #{self.primary_key} ASC")
|
22
|
+
}
|
23
|
+
|
24
|
+
scope :between, lambda { |start_time, end_time|
|
25
|
+
where(["#{PaperTrail.timestamp_field} > ? AND #{PaperTrail.timestamp_field} < ?", start_time, end_time ]).
|
26
|
+
order("#{PaperTrail.timestamp_field} ASC, #{self.primary_key} ASC")
|
21
27
|
}
|
22
28
|
|
23
29
|
# Restore the item from this version.
|
data/test/unit/model_test.rb
CHANGED
@@ -576,6 +576,24 @@ class HasPaperTrailModelTest < ActiveSupport::TestCase
|
|
576
576
|
end
|
577
577
|
end
|
578
578
|
|
579
|
+
context '.versions_between' do
|
580
|
+
setup do
|
581
|
+
@created = 30.days.ago
|
582
|
+
@first_update = 15.days.ago
|
583
|
+
@second_update = 1.day.ago
|
584
|
+
@widget.versions[0].update_attributes :created_at => @created
|
585
|
+
@widget.versions[1].update_attributes :created_at => @first_update
|
586
|
+
@widget.versions[2].update_attributes :created_at => @second_update
|
587
|
+
@widget.update_attribute :updated_at, @second_update
|
588
|
+
end
|
589
|
+
|
590
|
+
should 'return versions in the time period' do
|
591
|
+
assert_equal ['Fidget'], @widget.versions_between(20.days.ago, 10.days.ago).map(&:name)
|
592
|
+
assert_equal ['Widget', 'Fidget'], @widget.versions_between(45.days.ago, 10.days.ago).map(&:name)
|
593
|
+
assert_equal ['Fidget', 'Digit'], @widget.versions_between(16.days.ago, 1.minute.ago).map(&:name)
|
594
|
+
assert_equal [], @widget.versions_between(60.days.ago, 45.days.ago).map(&:name)
|
595
|
+
end
|
596
|
+
end
|
579
597
|
|
580
598
|
context 'on the first version' do
|
581
599
|
setup { @version = @widget.versions.first }
|
data/test/unit/timestamp_test.rb
CHANGED
@@ -3,7 +3,7 @@ require 'test_helper'
|
|
3
3
|
class TimestampTest < ActiveSupport::TestCase
|
4
4
|
|
5
5
|
setup do
|
6
|
-
PaperTrail.
|
6
|
+
PaperTrail.timestamp_field = :custom_created_at
|
7
7
|
change_schema
|
8
8
|
Version.reset_column_information
|
9
9
|
|
@@ -16,6 +16,10 @@ class TimestampTest < ActiveSupport::TestCase
|
|
16
16
|
@fluxor.update_attributes :name => 'Even more text.'
|
17
17
|
end
|
18
18
|
|
19
|
+
teardown do
|
20
|
+
PaperTrail.timestamp_field = :created_at
|
21
|
+
end
|
22
|
+
|
19
23
|
test 'versions works with custom timestamp field' do
|
20
24
|
# Normal behaviour
|
21
25
|
assert_equal 3, @fluxor.versions.length
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paper_trail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 6
|
9
|
-
-
|
10
|
-
version: 2.6.
|
9
|
+
- 2
|
10
|
+
version: 2.6.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Andy Stewart
|