このコミットが含まれているのは:
2026-11-03 15:17:10 +09:00
コミット 971b2632b0
7個のファイルの変更、37行の追加、20行の削除
+8 -5
ファイルの表示
@@ -1,20 +1,23 @@
class MaterialVersionRecorder < VersionRecorder
EVENT_TYPES = ['create', 'update', 'discard', 'restore'].freeze
def self.record! material:, event_type:, created_by_user:, file_snapshot: nil
new(material:, event_type:, created_by_user:, file_snapshot:).record!
def self.record! material:, event_type:, event:, created_by_user:, file_snapshot: nil
new(material:, event_type:, event:, created_by_user:, file_snapshot:).record!
end
def initialize material:, event_type:, created_by_user:, file_snapshot: nil
def initialize material:, event_type:, event:, created_by_user:, file_snapshot: nil
@file_snapshot = file_snapshot
super(record: material, event_type:, created_by_user:)
super(record: material, event_type:, event:, created_by_user:)
end
def self.ensure_snapshot! material, created_by_user:
return if material.material_versions.exists?
record!(material:, event_type: :create,
event = Event.create!(event_type: 'materials.create',
created_by_user:,
created_at: material.created_at)
record!(material:, event_type: :create, event:,
created_by_user: material.created_by_user || created_by_user)
end
+8 -5
ファイルの表示
@@ -1,16 +1,19 @@
class PostVersionRecorder < VersionRecorder
def self.record! post:, event_type:, created_by_user:
new(post:, event_type:, created_by_user:).record!
def self.record! post:, event_type:, event:, created_by_user:
new(post:, event_type:, event:, created_by_user:).record!
end
def initialize post:, event_type:, created_by_user:
super(record: post, event_type:, created_by_user:)
def initialize post:, event_type:, event:, created_by_user:
super(record: post, event_type:, event:, created_by_user:)
end
def self.ensure_snapshot! post, created_by_user:
return if post.post_versions.exists?
record!(post:, event_type: :create, created_by_user:)
event = Event.create!(event_type: 'posts.create',
created_by_user:,
created_at: post.created_at)
record!(post:, event_type: :create, event:, created_by_user:)
end
private
+4 -4
ファイルの表示
@@ -1,13 +1,13 @@
class TagVersionRecorder < VersionRecorder
def self.record! tag:, event_type:, created_by_user:, **_options
def self.record! tag:, event_type:, event:, created_by_user:, **_options
Tag.transaction do
SharedResourceIdAllocator.lock_space!(Tag, 'tags')
new(tag:, event_type:, created_by_user:).record!
new(tag:, event_type:, event:, created_by_user:).record!
end
end
def initialize tag:, event_type:, created_by_user:
super(record: tag, event_type:, created_by_user:)
def initialize tag:, event_type:, event:, created_by_user:
super(record: tag, event_type:, event:, created_by_user:)
end
private
+5 -3
ファイルの表示
@@ -1,9 +1,10 @@
class VersionRecorder
EVENT_TYPES = ['create', 'update', 'discard', 'restore'].freeze
def initialize record:, event_type:, created_by_user:
def initialize record:, event_type:, event:, created_by_user:
@record = record
@event_type = event_type.to_s
@event = event
@created_by_user = created_by_user
validate_event_type!
@@ -42,8 +43,9 @@ class VersionRecorder
def base_attributes latest
{ version_no: (latest&.version_no || 0) + 1,
event_type: @event_type,
created_at: Time.current,
created_by_user: @created_by_user }
event: @event,
created_by_user: @created_by_user,
created_at: Time.current }
end
def update_record_version_no! version_no