This commit is contained in:
2026-04-19 17:47:22 +09:00
parent f3a2b08359
commit 96307af509
12 changed files with 63 additions and 47 deletions
@@ -12,5 +12,8 @@ class NicoTagVersionRecorder < VersionRecorder
def version_class = NicoTagVersion
def version_association = :nico_tag_versions
def record_key = :tag
def snapshot_attributes = { name: @tag.name, linked_tags: @tag.snapshot_linked_tags.join(' ') }
def snapshot_attributes
{ name: @record.name, linked_tags: @record.snapshot_linked_tags.join(' ') }
end
end
@@ -1,4 +1,4 @@
class PostVersionRecorder
class PostVersionRecorder < VersionRecorder
def self.record! post:, event_type:, created_by_user:
new(post:, event_type:, created_by_user:).record!
end
@@ -14,12 +14,12 @@ class PostVersionRecorder
def record_key = :post
def snapshot_attributes
{ title: @post.title,
url: @post.url,
thumbnail_base: @post.thumbnail_base,
tags: @post.snapshot_tag_names.join(' '),
parent: @post.parent,
original_created_from: @post.original_created_from,
original_created_before: @post.original_created_before }
{ title: @record.title,
url: @record.url,
thumbnail_base: @record.thumbnail_base,
tags: @record.snapshot_tag_names.join(' '),
parent: @record.parent,
original_created_from: @record.original_created_from,
original_created_before: @record.original_created_before }
end
end
+4 -4
View File
@@ -14,9 +14,9 @@ class TagVersionRecorder < VersionRecorder
def record_key = :tag
def snapshot_attributes
{ name: @tag.name,
category: @tag.category,
aliases: @tag.snapshot_aliases.join(' '),
parent_tag_ids: @tag.snapshot_parent_tag_ids.join(' ') }
{ name: @record.name,
category: @record.category,
aliases: @record.snapshot_aliases.join(' '),
parent_tag_ids: @record.snapshot_parent_tag_ids.join(' ') }
end
end
+26
View File
@@ -0,0 +1,26 @@
class TagVersioning
def self.record! tag, event_type:, created_by_user:
if tag.nico?
NicoTagVersionRecorder.record!(tag:, event_type:, created_by_user:)
else
TagVersionRecorder.record!(tag:, event_type:, created_by_user:)
end
end
def self.record_tag_snapshot! tag, created_by_user:
event_type =
if tag.nico?
tag.nico_tag_versions.exists? ? :update : :create
else
tag.tag_versions.exists? ? :update : :create
end
record!(tag, event_type:, created_by_user:)
end
def self.record_tag_snapshots! tags, created_by_user:
tags.each do |tag|
record_tag_snapshot!(tag, created_by_user:)
end
end
end
+1 -1
View File
@@ -9,7 +9,7 @@ class VersionRecorder
validate_event_type!
end
def record! record, event_type:, created_by_user:
def record!
@record.with_lock do
latest = latest_version