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,