From 66ddbac188b336e08ad4684d38408324b2c109db Mon Sep 17 00:00:00 2001 From: dmitrytrager Date: Tue, 7 Apr 2026 00:16:22 +0200 Subject: [PATCH 1/2] fix: update CSV file generators for topic tags Since tags are not language agnostic we do not use #tags_on function anymore. Language scope for content works via topics only and for topics we now use #taggings and #tag_list functions --- app/services/csv_generator/tag_details.rb | 16 ++++++++-------- app/services/csv_generator/topic_tags.rb | 6 +++--- spec/services/csv_generator/tag_details_spec.rb | 4 ++-- spec/services/csv_generator/topic_tags_spec.rb | 4 ++-- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/app/services/csv_generator/tag_details.rb b/app/services/csv_generator/tag_details.rb index 70d54696..3b63e562 100644 --- a/app/services/csv_generator/tag_details.rb +++ b/app/services/csv_generator/tag_details.rb @@ -14,13 +14,13 @@ def headers def scope language.topics.active.includes(:tags) - .flat_map { |topic| topic.tags_on(language.code.to_sym) } - .uniq - .map do |tag| - [ - tag.id, - tag.name, - ] - end + .flat_map do |topic| + topic.taggings.map do |tagging| + [ + tagging.tag.id, + tagging.tag.name, + ] + end + end.uniq end end diff --git a/app/services/csv_generator/topic_tags.rb b/app/services/csv_generator/topic_tags.rb index 7b6768c0..7761500e 100644 --- a/app/services/csv_generator/topic_tags.rb +++ b/app/services/csv_generator/topic_tags.rb @@ -15,12 +15,12 @@ def headers def scope language.topics.active.includes(:tags) .flat_map do |topic| - topic.tags_on(language.code.to_sym).map do |tag| + topic.taggings.map do |tagging| [ topic.id, - tag.id, + tagging.tag.id, ] end - end + end.uniq end end diff --git a/spec/services/csv_generator/tag_details_spec.rb b/spec/services/csv_generator/tag_details_spec.rb index b9300af3..c0e5234a 100644 --- a/spec/services/csv_generator/tag_details_spec.rb +++ b/spec/services/csv_generator/tag_details_spec.rb @@ -14,8 +14,8 @@ let!(:topic) { create(:topic, :tagged, language:) } let(:data) do header.tap do |csv| - topic.tags_on(language.code.to_sym).each do |tag| - csv << "#{tag.id},#{tag.name}\n" + topic.taggings.each do |tagging| + csv << "#{tagging.tag.id},#{tagging.tag.name}\n" end end end diff --git a/spec/services/csv_generator/topic_tags_spec.rb b/spec/services/csv_generator/topic_tags_spec.rb index b2c9a439..40ad5f45 100644 --- a/spec/services/csv_generator/topic_tags_spec.rb +++ b/spec/services/csv_generator/topic_tags_spec.rb @@ -14,8 +14,8 @@ let!(:topic) { create(:topic, :tagged, language:) } let(:data) do header.tap do |csv| - topic.tags_on(language.code.to_sym).each do |tag| - csv << "#{topic.id},#{tag.id}\n" + topic.taggings.each do |tagging| + csv << "#{topic.id},#{tagging.tag.id}\n" end end end From f0dd4e9a0013b41a41fddc784a7372994279db9a Mon Sep 17 00:00:00 2001 From: dmitrytrager Date: Tue, 7 Apr 2026 17:24:14 +0200 Subject: [PATCH 2/2] fix: try to prevent n+1 problem for csv generators --- app/services/csv_generator/tag_details.rb | 2 +- app/services/csv_generator/topic_tags.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/services/csv_generator/tag_details.rb b/app/services/csv_generator/tag_details.rb index 3b63e562..3895e790 100644 --- a/app/services/csv_generator/tag_details.rb +++ b/app/services/csv_generator/tag_details.rb @@ -13,7 +13,7 @@ def headers end def scope - language.topics.active.includes(:tags) + language.topics.active.includes(taggings: :tag) .flat_map do |topic| topic.taggings.map do |tagging| [ diff --git a/app/services/csv_generator/topic_tags.rb b/app/services/csv_generator/topic_tags.rb index 7761500e..cce72fe5 100644 --- a/app/services/csv_generator/topic_tags.rb +++ b/app/services/csv_generator/topic_tags.rb @@ -13,7 +13,7 @@ def headers end def scope - language.topics.active.includes(:tags) + language.topics.active.includes(taggings: :tag) .flat_map do |topic| topic.taggings.map do |tagging| [