x일 이상 지난 기존 주제를 일괄 닫기?

안녕하세요,

XenForo에서 Discourse로 포럼을 이전했는데, 닫고 싶은 오래된 게시글이 많습니다. "x개월 이전의 모든 주제를 닫기"라고 지정할 수 있는 방법이 있을까요? 이미 카테고리 설정에서 이 옵션을 적용해 두었는데, 새 주제에만 작동하는 것 같습니다.

카테고리 설정에서 이 옵션을 사용해 볼 수 있습니다:

과거 항목까지 소급 적용되어 닫히지는 않을 것 같지만, 시도해 볼 만합니다.

또 다른 방법으로는 고급 필터를 사용하고 ‘Before’ 날짜를 설정하는 것입니다:

이렇게 하면 검색된 주제들에 대해 일괄 작업을 사용할 수 있습니다.

Performing bulk actions as a moderator 링크를 통해 대량으로 주제를 닫을 수 있습니다.
하지만 닫고자 하는 주제의 수에 따라 Administrative Bulk Operations 링크가 더 나은 선택이 될 수 있습니다.

네, 유사한 기능이 링크되어 있을 것입니다. 특정 카테고리로 범위를 좁히려면 어떻게 해야 하나요?

카테고리 ID를 찾은 후, 이를 명령어에서 추가 조건으로 사용하면 됩니다. 예를 들어, 9월 24일 이전에 생성된 ‘general’ 카테고리의 모든 열린 토픽을 닫으려면 다음과 같이 할 수 있습니다:

cat_id = Category.find_by_slug('general').id
Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).find_each do |topic|
  topic.update_status('closed', true, Discourse.system_user)
end

이러한 유형의 작업은 항상 조금 불안하게 만듭니다. 문제가 발생할 경우를 대비해 실행 전에 데이터베이스 백업을 꼭 만들어 두세요. 또한 올바른 데이터에 작업을 수행하고 있는지 확인하기 위해 사전 검사를 수행하는 것도 좋은 아이디어입니다. 이를 위한 한 가지 방법은 작업이 적용될 토픽의 count를 반환하는 것입니다. 예를 들어:

Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).count