Added Revision.timestamp attribute, which is a timestamp to the precision of msec. Intention is to get rid of the revision.number and use this one for sotrting etc. The problem with created_at / updated_at in this role is that trhey have precision of seconds, which is not good enough for some of the purposes.
This commit is contained in:
parent
b4ae0b3065
commit
476d7810f6
3 changed files with 19 additions and 2 deletions
|
@ -112,11 +112,18 @@ class Revision < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
protected
|
protected
|
||||||
before_create :set_revision_number
|
before_create :set_revision_number, :set_timestamp
|
||||||
after_create :force_rendering
|
after_create :force_rendering
|
||||||
after_save :clear_display_cache
|
after_save :clear_display_cache
|
||||||
|
|
||||||
|
# TODO Refactor this away. Revisions collection should not rely on the revision number for
|
||||||
|
# sorting etc - revisions must be easy to delete (this helps fighting wiki spam)
|
||||||
def set_revision_number
|
def set_revision_number
|
||||||
self.number = self.class.count(['page_id = ?', page_id]) + 1
|
self.number = self.class.count(['page_id = ?', page_id]) + 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_timestamp
|
||||||
|
self.timestamp = (Time.now.to_f * 1000).to_i.to_s
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,6 +2,8 @@ CREATE TABLE revisions (
|
||||||
id <%= @pk %>,
|
id <%= @pk %>,
|
||||||
created_at <%= @datetime %> NOT NULL,
|
created_at <%= @datetime %> NOT NULL,
|
||||||
updated_at <%= @datetime %> NOT NULL,
|
updated_at <%= @datetime %> NOT NULL,
|
||||||
|
|
||||||
|
timestamp CHAR(13) NOT NULL,
|
||||||
page_id INTEGER NOT NULL,
|
page_id INTEGER NOT NULL,
|
||||||
content TEXT NOT NULL,
|
content TEXT NOT NULL,
|
||||||
author VARCHAR(60),
|
author VARCHAR(60),
|
||||||
|
|
10
test/fixtures/revisions.yml
vendored
10
test/fixtures/revisions.yml
vendored
|
@ -2,6 +2,7 @@ home_page_first_revision:
|
||||||
id: 1
|
id: 1
|
||||||
created_at: <%= Time.local(2004, 4, 4, 15, 50).to_formatted_s(:db) %>
|
created_at: <%= Time.local(2004, 4, 4, 15, 50).to_formatted_s(:db) %>
|
||||||
updated_at: <%= Time.local(2004, 4, 4, 15, 50).to_formatted_s(:db) %>
|
updated_at: <%= Time.local(2004, 4, 4, 15, 50).to_formatted_s(:db) %>
|
||||||
|
timestamp: <%= (Time.local(2004, 4, 4, 15, 50).to_f * 1000).to_i %>
|
||||||
page_id: 1
|
page_id: 1
|
||||||
number: 1
|
number: 1
|
||||||
content: First revision of the HomePage end
|
content: First revision of the HomePage end
|
||||||
|
@ -12,6 +13,7 @@ my_way_first_revision:
|
||||||
id: 2
|
id: 2
|
||||||
created_at: <%= 9.days.ago.to_formatted_s(:db) %>
|
created_at: <%= 9.days.ago.to_formatted_s(:db) %>
|
||||||
updated_at: <%= 9.days.ago.to_formatted_s(:db) %>
|
updated_at: <%= 9.days.ago.to_formatted_s(:db) %>
|
||||||
|
timestamp: <%= (9.days.ago.to_f * 1000).to_i %>
|
||||||
page_id: 2
|
page_id: 2
|
||||||
number: 1
|
number: 1
|
||||||
content: MyWay
|
content: MyWay
|
||||||
|
@ -21,6 +23,7 @@ smart_engine_first_revision:
|
||||||
id: 3
|
id: 3
|
||||||
created_at: <%= 8.days.ago.to_formatted_s(:db) %>
|
created_at: <%= 8.days.ago.to_formatted_s(:db) %>
|
||||||
updated_at: <%= 8.days.ago.to_formatted_s(:db) %>
|
updated_at: <%= 8.days.ago.to_formatted_s(:db) %>
|
||||||
|
timestamp: <%= (8.days.ago.to_f * 1000).to_i %>
|
||||||
page_id: 3
|
page_id: 3
|
||||||
number: 1
|
number: 1
|
||||||
content: SmartEngine
|
content: SmartEngine
|
||||||
|
@ -30,6 +33,7 @@ that_way_first_revision:
|
||||||
id: 4
|
id: 4
|
||||||
created_at: <%= 7.days.ago.to_formatted_s(:db) %>
|
created_at: <%= 7.days.ago.to_formatted_s(:db) %>
|
||||||
updated_at: <%= 7.days.ago.to_formatted_s(:db) %>
|
updated_at: <%= 7.days.ago.to_formatted_s(:db) %>
|
||||||
|
timestamp: <%= (7.days.ago.to_f * 1000).to_i %>
|
||||||
page_id: 4
|
page_id: 4
|
||||||
number: 1
|
number: 1
|
||||||
content: ThatWay
|
content: ThatWay
|
||||||
|
@ -39,6 +43,7 @@ no_wiki_word_first_revision:
|
||||||
id: 5
|
id: 5
|
||||||
created_at: <%= 6.days.ago.to_formatted_s(:db) %>
|
created_at: <%= 6.days.ago.to_formatted_s(:db) %>
|
||||||
updated_at: <%= 6.days.ago.to_formatted_s(:db) %>
|
updated_at: <%= 6.days.ago.to_formatted_s(:db) %>
|
||||||
|
timestamp: <%= (6.days.ago.to_f * 1000).to_i %>
|
||||||
page_id: 5
|
page_id: 5
|
||||||
number: 1
|
number: 1
|
||||||
content: hey you
|
content: hey you
|
||||||
|
@ -48,6 +53,7 @@ home_page_second_revision:
|
||||||
id: 6
|
id: 6
|
||||||
created_at: <%= Time.local(2004, 4, 4, 16, 50).to_formatted_s(:db) %>
|
created_at: <%= Time.local(2004, 4, 4, 16, 50).to_formatted_s(:db) %>
|
||||||
updated_at: <%= Time.local(2004, 4, 4, 16, 50).to_formatted_s(:db) %>
|
updated_at: <%= Time.local(2004, 4, 4, 16, 50).to_formatted_s(:db) %>
|
||||||
|
timestamp: <%= (Time.local(2004, 4, 4, 16, 50).to_f * 1000).to_i %>
|
||||||
page_id: 1
|
page_id: 1
|
||||||
number: 2
|
number: 2
|
||||||
content: HisWay would be MyWay in kinda ThatWay in HisWay though MyWay \OverThere -- see SmartEngine in that SmartEngineGUI
|
content: HisWay would be MyWay in kinda ThatWay in HisWay though MyWay \OverThere -- see SmartEngine in that SmartEngineGUI
|
||||||
|
@ -57,6 +63,7 @@ first_page_first_revision:
|
||||||
id: 7
|
id: 7
|
||||||
created_at: <%= Time.local(2004, 4, 4, 16, 55).to_formatted_s(:db) %>
|
created_at: <%= Time.local(2004, 4, 4, 16, 55).to_formatted_s(:db) %>
|
||||||
updated_at: <%= Time.local(2004, 4, 4, 16, 55).to_formatted_s(:db) %>
|
updated_at: <%= Time.local(2004, 4, 4, 16, 55).to_formatted_s(:db) %>
|
||||||
|
timestamp: <%= (Time.local(2004, 4, 4, 16, 55).to_f * 1000).to_i %>
|
||||||
page_id: 6
|
page_id: 6
|
||||||
number: 1
|
number: 1
|
||||||
content: HisWay would be MyWay in kinda ThatWay in HisWay though MyWay \\OverThere -- see SmartEngine in that SmartEngineGUI
|
content: HisWay would be MyWay in kinda ThatWay in HisWay though MyWay \\OverThere -- see SmartEngine in that SmartEngineGUI
|
||||||
|
@ -66,6 +73,7 @@ oak_first_revision:
|
||||||
id: 8
|
id: 8
|
||||||
created_at: <%= 5.days.ago.to_formatted_s(:db) %>
|
created_at: <%= 5.days.ago.to_formatted_s(:db) %>
|
||||||
updated_at: <%= 5.days.ago.to_formatted_s(:db) %>
|
updated_at: <%= 5.days.ago.to_formatted_s(:db) %>
|
||||||
|
timestamp: <%= (5.days.ago.to_f * 1000).to_i %>
|
||||||
page_id: 7
|
page_id: 7
|
||||||
number: 1
|
number: 1
|
||||||
content: "All about oak.\ncategory: trees"
|
content: "All about oak.\ncategory: trees"
|
||||||
|
@ -76,9 +84,9 @@ elephant_first_revision:
|
||||||
id: 9
|
id: 9
|
||||||
created_at: <%= 10.minutes.ago.to_formatted_s(:db) %>
|
created_at: <%= 10.minutes.ago.to_formatted_s(:db) %>
|
||||||
updated_at: <%= 10.minutes.ago.to_formatted_s(:db) %>
|
updated_at: <%= 10.minutes.ago.to_formatted_s(:db) %>
|
||||||
|
timestamp: <%= (10.minutes.ago.to_f * 1000).to_i %>
|
||||||
page_id: 8
|
page_id: 8
|
||||||
number: 1
|
number: 1
|
||||||
content: "All about elephants.\ncategory: animals"
|
content: "All about elephants.\ncategory: animals"
|
||||||
author: Guest
|
author: Guest
|
||||||
ip: 127.0.0.2
|
ip: 127.0.0.2
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue