From fcd3b87b2a1755c65b41b3d8b0ed7c212994e78c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=BF=E3=81=A6=E3=82=8B=E3=81=9E?= Date: Mon, 27 Apr 2026 12:45:06 +0900 Subject: [PATCH] =?UTF-8?q?=E5=A5=AA=E3=81=AF=E3=82=8C=E3=81=9F=E5=88=A5?= =?UTF-8?q?=E5=90=8D=E3=81=AE=E5=B1=A5=E6=AD=B4=E8=BF=BD=E5=8A=A0=20(#329)?= =?UTF-8?q?=20(#338)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #329 Co-authored-by: miteruzo Reviewed-on: https://git.miteruzo.com/miteruzo/btrc-hub/pulls/338 --- backend/app/controllers/tags_controller.rb | 23 +++++++++++++++++++ backend/spec/requests/tags_spec.rb | 2 -- .../requests/wiki_body_search_pending_spec.rb | 2 +- .../requests/wiki_restore_pending_spec.rb | 2 +- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/backend/app/controllers/tags_controller.rb b/backend/app/controllers/tags_controller.rb index 6a81dd4..3560e81 100644 --- a/backend/app/controllers/tags_controller.rb +++ b/backend/app/controllers/tags_controller.rb @@ -336,8 +336,27 @@ class TagsController < ApplicationController end def update_aliases! tag, alias_names + alias_names = alias_names.uniq + + affected_tags = [tag] + current_aliases = tag.tag_name.aliases.to_a + current_aliases.each do |alias_tag_name| + next if alias_names.include?(alias_tag_name.name) + + affected_tags << alias_tag_name.canonical&.tag + end + + alias_names.each do |alias_name| + alias_tag_name = TagName.find_undiscard_or_create_by!(name: alias_name) + affected_tags << alias_tag_name.canonical&.tag + end + + affected_tags.compact.uniq.each do |affected_tag| + TagVersioning.ensure_snapshot!(affected_tag, created_by_user: current_user) + end + current_aliases.each do |alias_tag_name| next if alias_names.include?(alias_tag_name.name) @@ -348,6 +367,10 @@ class TagsController < ApplicationController alias_tag_name = TagName.find_undiscard_or_create_by!(name: alias_name) alias_tag_name.update!(canonical: tag.tag_name) end + + affected_tags.compact.uniq.each do |affected_tag| + record_tag_version!(affected_tag, event_type: :update, created_by_user: current_user) + end end def update_parent_tags! tag, parent_names diff --git a/backend/spec/requests/tags_spec.rb b/backend/spec/requests/tags_spec.rb index 864cdae..a688598 100644 --- a/backend/spec/requests/tags_spec.rb +++ b/backend/spec/requests/tags_spec.rb @@ -964,8 +964,6 @@ RSpec.describe 'Tags API', type: :request do end it '別名を他 tag から奪った場合、奪はれた側の tag version も作成する' do - pending '#329 で対応予定' - old_owner = Tag.create!( tag_name: TagName.create!(name: 'put_alias_old_owner'), category: :general diff --git a/backend/spec/requests/wiki_body_search_pending_spec.rb b/backend/spec/requests/wiki_body_search_pending_spec.rb index ebfc874..98bd6af 100644 --- a/backend/spec/requests/wiki_body_search_pending_spec.rb +++ b/backend/spec/requests/wiki_body_search_pending_spec.rb @@ -4,7 +4,7 @@ RSpec.describe 'Wiki body search', type: :request do let!(:user) { create_member_user! } it 'searches wiki pages by body text' do - pending 'Wiki 本文検索実装時に有効化する' + pending '#336 で対応予定' Wiki::Commit.create_content!( tag_name: TagName.create!(name: 'wiki_body_search_hit'), diff --git a/backend/spec/requests/wiki_restore_pending_spec.rb b/backend/spec/requests/wiki_restore_pending_spec.rb index 0ceeca1..33b6a63 100644 --- a/backend/spec/requests/wiki_restore_pending_spec.rb +++ b/backend/spec/requests/wiki_restore_pending_spec.rb @@ -8,7 +8,7 @@ RSpec.describe 'Wiki restore', type: :request do end it 'restores wiki page to previous version' do - pending 'Wiki 版巻き戻し API 実装時に有効化する' + pending '#337 で対応予定' page = Wiki::Commit.create_content!(