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

카테고리 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