This commit is contained in:
r888888888
2014-03-18 13:03:38 -07:00
parent 71e3b1f928
commit c228b5d855
2 changed files with 38 additions and 12 deletions

View File

@@ -95,20 +95,44 @@ class Artist < ActiveRecord::Base
module VersionMethods
def create_version(force=false)
if name_changed? || url_string_changed? || is_active_changed? || is_banned_changed? || other_names_changed? || group_name_changed? || notes_changed? || force
ArtistVersion.create(
:artist_id => id,
:name => name,
:updater_id => CurrentUser.user.id,
:updater_ip_addr => CurrentUser.ip_addr,
:url_string => url_string,
:is_active => is_active,
:is_banned => is_banned,
:other_names => other_names,
:group_name => group_name
)
if merge_version?
merge_version
else
create_new_version
end
end
end
def create_new_version
ArtistVersion.create(
:artist_id => id,
:name => name,
:updater_id => CurrentUser.user.id,
:updater_ip_addr => CurrentUser.ip_addr,
:url_string => url_string,
:is_active => is_active,
:is_banned => is_banned,
:other_names => other_names,
:group_name => group_name
)
end
def merge_version
prev = versions.last
prev.update_attributes(
:url_string => url_string,
:is_active => is_active,
:is_banned => is_banned,
:other_names => other_names,
:group_name => group_name
)
end
def merge_version?
prev = versions.last
prev && prev.updater_id == CurrentUser.user.id && prev.updated_at > 1.hour.ago
end
def revert_to!(version)
self.name = version.name
self.url_string = version.url_string

View File

@@ -185,7 +185,9 @@ class ArtistTest < ActiveSupport::TestCase
assert_difference("ArtistVersion.count") do
artist.other_names = "xxx"
artist.save
Timecop.travel(1.day.from_now) do
artist.save
end
end
first_version = ArtistVersion.first