From 468ef44bf9023459d50f392a6d71b8f7a17b067b 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, 15 Dec 2025 01:13:52 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20#84=20=E3=81=AE=E3=83=90=E3=82=B0?= =?UTF-8?q?=E5=AF=BE=E5=BF=9C=EF=BC=88#181=EF=BC=89=20(#182)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #181 バグ #181 #181 #181 Co-authored-by: miteruzo Reviewed-on: https://git.miteruzo.com/miteruzo/btrc-hub/pulls/182 --- backend/lib/tasks/sync_nico.rake | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/backend/lib/tasks/sync_nico.rake b/backend/lib/tasks/sync_nico.rake index 00e309f..d20150c 100644 --- a/backend/lib/tasks/sync_nico.rake +++ b/backend/lib/tasks/sync_nico.rake @@ -27,7 +27,9 @@ namespace :nico do end end - PostTag.where(post_id: post.id, tag_id: to_remove.to_a).kept.find_each(&:discard!) + PostTag.where(post_id: post.id, tag_id: to_remove.to_a).kept.find_each do |pt| + pt.discard_by!(nil) + end end mysql_user = ENV['MYSQL_USER'] @@ -57,12 +59,14 @@ namespace :nico do end post.save! post.resized_thumbnail! + sync_post_tags!(post, [Tag.tagme.id]) end kept_tags = post.tags.reload kept_non_nico_ids = kept_tags.where.not(category: 'nico').pluck(:id).to_set desired_nico_ids = [] + desired_non_nico_ids = [] datum['tags'].each do |raw| name = "nico:#{ raw }" tag = Tag.find_or_initialize_by(name:) do |t| @@ -70,17 +74,19 @@ namespace :nico do end tag.save! if tag.new_record? desired_nico_ids << tag.id - desired_nico_ids.concat(tag.linked_tags.pluck(:id)) + unless tag.in?(kept_tags) + desired_non_nico_ids.concat(tag.linked_tags.pluck(:id)) + desired_nico_ids.concat(tag.linked_tags.pluck(:id)) + end end desired_nico_ids.uniq! - desired_extra_ids = [] - desired_extra_ids << Tag.tagme.id if kept_tags.size < 10 - desired_extra_ids << Tag.bot.id - desired_extra_ids.compact! - desired_extra_ids.uniq! - - desired_all_ids = kept_non_nico_ids.to_a + desired_nico_ids + desired_extra_ids + desired_all_ids = kept_non_nico_ids.to_a + desired_nico_ids + desired_non_nico_ids.concat(kept_non_nico_ids.to_a) + desired_non_nico_ids.uniq! + if kept_non_nico_ids.to_set != desired_non_nico_ids.to_set + desired_all_ids << Tag.bot.id + end desired_all_ids.uniq! sync_post_tags!(post, desired_all_ids)