작은 액션 게시물(예: closed/pinned 같은 메시지)에 관리 도구를 포함할 수 있을까요? 예를 들어 영구 삭제, 소유권 변경 등이 가능하도록 하는 것입니다.
저는 이 사이트에서 유일한 관리자입니다. 이러한 게시물이 소프트 삭제 상태로 숨겨져 있긴 하지만, 스태프 사용자로서도 여전히 보기 좋지 않습니다. 때로는 대략적인 초안을 정식 게시물로 만들기 전에 소프트 삭제된 메시지에 메모를 남기기도 해서, 숨겨진 답변을 표시하기 위해 클릭할 때마다 이러한 메모와 작은 액션 메시지를 구별하기가 다소 어렵습니다.
컴포넌트에 CSS를 사용하는 것도 별로 원하지 않습니다. 특정 주제에 대해 아카이브하거나 닫았다는 것을 사용자에게 알리는 것처럼, 작은 액션 메시지가 표시되어야 하는 경우가 몇 가지 있기 때문입니다. 저는 단순히 고정/해제/고정/해제 같은 흐름이 계속되는 것을 원하지 않을 뿐입니다. 이런 상황은 모두 본 적이 있을 테니 제가 어떤 의미인지 이해하시리라 생각합니다.
참고로, 저는 약 10명의 사용자가 있는 작은 사이트를 운영 중이며, 이는 기본적으로 다양한 노트와 미디어를 위한 디지털 라이브러리처럼 사용되고 있습니다. 취미로 이벤트 홍보를 하기도 해서, 정보의 영구 링크를 위해 페이지 게시 기능이 매우 유용합니다.
제 추측에 따르면, 작은 액션 게시물에 렌치(설정)가 구현되지 않은 것은 의도적인 것일 수 있습니다. 대부분의 사이트에서는 누가 어떤 게시물을 어떻게 처리했는지 스태프가 감사 추적을 할 수 있기를 원하기 때문이죠. 이는 타당한 이유입니다. 하지만 특정 상황에서는 유용할 수 있다고 생각하며, 아마도 추가 플러그인 형태로 제공될 수 있을 것입니다.
또한 이 사이트에 처음 게시물을 올리는 것입니다. 이 요청에 대한 적절한 장소라고 생각하지만, 그렇지 않다면 죄송합니다!
필요하다면 p.raw.strip.downcase == "delete" 라인을 다른 키워드로 수정하여 이 키워드를 변경할 수 있습니다.
smalldelete.rb 스크립트
class TopicCleaner
def self.delete_small_actions(topic_id, dry_run: false)
topic = Topic.find_by(id: topic_id)
unless topic
puts "Topic #{topic_id} not found"
return
end
posts = topic.posts.where(post_type: Post.types[:small_action])
to_delete = posts.select { |p| p.raw.strip.downcase == "delete" }
if to_delete.empty?
puts "No small action posts with 'delete' found in topic #{topic_id}"
return
end
puts "Found #{to_delete.size} matching posts in topic ##{topic_id}"
to_delete.each do |post|
if dry_run
puts "Would PERMANENTLY delete post ##{post.id} (created #{post.created_at}, by #{post.user.username})"
else
post.destroy()
puts "🗑️ Permanently deleted post ##{post.id}"
end
end
puts dry_run ? "Dry run complete — no posts deleted." : "Finished permanent cleanup of topic #{topic_id}"
end
end
이 스크립트는 ID로 주제를 찾은 후, 해당 주제 내의 모든 게시물이 정의된 키워드만 포함하고 있는지 확인합니다. 조건이 충족되면 해당 특정 게시물을 삭제 대상으로 지정합니다.