From 34a4ffefb43b86ac530fbe9cdeaa8cb8e59868e3 Mon Sep 17 00:00:00 2001 From: miteruzo Date: Sun, 18 Oct 2026 01:52:09 +0900 Subject: [PATCH] #428 --- backend/app/services/tag_name_completion.rb | 9 +++++++-- backend/app/services/tag_version_recorder.rb | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/backend/app/services/tag_name_completion.rb b/backend/app/services/tag_name_completion.rb index 93e4327..a2d59ea 100644 --- a/backend/app/services/tag_name_completion.rb +++ b/backend/app/services/tag_name_completion.rb @@ -13,14 +13,19 @@ class TagNameCompletion locales ||= Locale.where(deprecated_at: nil).order(:language_code, :created_at, :script_code) tag.with_lock do primary_names = tag.tag_names.where(primary_flg: true).index_by(&:language_code) - locales.to_a.uniq(&:language_code).each do |locale| - next if primary_names.key?(locale.language_code) + missing_locales = locales.to_a.uniq(&:language_code).reject { |locale| + primary_names.key?(locale.language_code) + } + next if missing_locales.empty? + TagVersioning.ensure_snapshot!(tag, created_by_user: nil) + missing_locales.each do |locale| source_language = locale.language_code == 'ja' ? 'ain' : 'ja' name = TagName.generate_name(locale, tag, primary_names[source_language]) primary_names[locale.language_code] = create_name!(locale, tag, name) end tag.association(:tag_names).reset + TagVersioning.record!(tag, event_type: :update, created_by_user: nil) end end diff --git a/backend/app/services/tag_version_recorder.rb b/backend/app/services/tag_version_recorder.rb index e14d497..8fe6dc5 100644 --- a/backend/app/services/tag_version_recorder.rb +++ b/backend/app/services/tag_version_recorder.rb @@ -15,7 +15,7 @@ class TagVersionRecorder < VersionRecorder def snapshot_attributes names = snapshot_names - compatibility_names = names.fetch('ja') + compatibility_names = names['ja'] || names.fetch('ain') { name: compatibility_names.fetch('name'), category: @record.category,