Fix #3243: Don't create new note versions when nothing is changed.
This commit is contained in:
@@ -146,6 +146,7 @@ class Note < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def create_version
|
def create_version
|
||||||
|
return unless versioned_attributes_changed?
|
||||||
User.where(id: CurrentUser.id).update_all("note_update_count = note_update_count + 1")
|
User.where(id: CurrentUser.id).update_all("note_update_count = note_update_count + 1")
|
||||||
CurrentUser.reload
|
CurrentUser.reload
|
||||||
|
|
||||||
@@ -158,6 +159,10 @@ class Note < ApplicationRecord
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def versioned_attributes_changed?
|
||||||
|
new_record? || x_changed? || y_changed? || width_changed? || height_changed? || is_active_changed? || body_changed?
|
||||||
|
end
|
||||||
|
|
||||||
def create_new_version
|
def create_new_version
|
||||||
versions.create(
|
versions.create(
|
||||||
:updater_id => updater_id,
|
:updater_id => updater_id,
|
||||||
|
|||||||
@@ -153,6 +153,14 @@ class NoteTest < ActiveSupport::TestCase
|
|||||||
assert_equal(["Post is note locked"], @note.errors.full_messages)
|
assert_equal(["Post is note locked"], @note.errors.full_messages)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context "without making any changes" do
|
||||||
|
should "not create a new version" do
|
||||||
|
assert_no_difference("@note.versions.count") do
|
||||||
|
@note.save
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when notes have been vandalized by one user" do
|
context "when notes have been vandalized by one user" do
|
||||||
|
|||||||
Reference in New Issue
Block a user