This commit is contained in:
r888888888
2014-03-18 13:06:00 -07:00
parent c228b5d855
commit ff810a16ba
2 changed files with 35 additions and 9 deletions

View File

@@ -136,15 +136,37 @@ class WikiPage < ActiveRecord::Base
title.tr("_", " ")
end
def merge_version
prev = versions.last
prev.update_attributes(
:title => title,
:body => body,
:is_locked => is_locked
)
end
def merge_version?
prev = versions.last
prev && prev.updater_id == CurrentUser.user.id && prev.updated_at > 1.hour.ago
end
def create_new_version
versions.create(
:updater_id => CurrentUser.user.id,
:updater_ip_addr => CurrentUser.ip_addr,
:title => title,
:body => body,
:is_locked => is_locked
)
end
def create_version
if title_changed? || body_changed? || is_locked_changed?
versions.create(
:updater_id => CurrentUser.user.id,
:updater_ip_addr => CurrentUser.ip_addr,
:title => title,
:body => body,
:is_locked => is_locked
)
if merge_version?
merge_version
else
create_new_version
end
end
end

View File

@@ -75,13 +75,17 @@ class WikiPageTest < ActiveSupport::TestCase
assert_difference("WikiPageVersion.count") do
@wiki_page.title = "yyy"
@wiki_page.save
Timecop.travel(1.day.from_now) do
@wiki_page.save
end
end
end
should "revert to a prior version" do
@wiki_page.title = "yyy"
@wiki_page.save
Timecop.travel(1.day.from_now) do
@wiki_page.save
end
version = WikiPageVersion.first
@wiki_page.revert_to!(version)
@wiki_page.reload