모든 콘텐츠를 가져왔지만, 각 새 주제의 날짜가 오늘 날짜로 게시된 것처럼 변경되기를 원합니다. 각 주제에 추가 게시글은 없습니다.
토픽レンチ 메뉴에 있는 "Change Timestamp"입니다:
팝업 대화상자에는 다음과 같이 설명되어 있습니다:
토픽의 새 타임스탬프를 선택해 주세요. 토픽 내 게시글들은 동일한 시간 차이를 가지도록 업데이트됩니다.
참고로, 저는 API를 사용했고, created_at을 실제 게시 날짜로 설정하는 것을 잊어버렸습니다.
그런데 이걸 3,000개 이상의 게시물에 대해 해야 해요
API가 담당할 일 같습니다: updateTopicTimestamp.
Rails로 할 수 있습니다. 검색해 보면 어딘가에 예제가 있을 것 같습니다. 여기 시작점을 하나 드릴게요.
Topic.update_all(created_at: Time.now()
하지만 테스트를 해 보시는 걸 추천합니다. 예를 들어, 포스트도 함께 업데이트해야 하지 않을까요?
게시물이 없고 해당 주제에는 주제/첫 번째 게시물 1개만 있는 경우, 제공해 주신 명령어가 바로 사용 가능한가요?
토픽 타임스탬프를 변경하는 대화 상자에 다음과 같은 메시지가 표시됩니다:
토픽의 새 타임스탬프를 선택해 주세요. 토픽 내의 모든 게시글은 동일한 시간 차이를 유지하도록 업데이트됩니다.
토픽의 날짜를 변경하면 모든 답글이 새 날짜를 기준으로 자동으로 올바르게 조정됩니다. 예를 들어, 원래 1월 1일에 작성된 토픽에 1월 5일에 답글이 달렸다면, 토픽 날짜를 1월 2일로 변경하면 답글도 자동으로 1월 6일로 업데이트됩니다. 간단하죠!
호기심에 물어보는데, 3,000개 이상의 모든 주제가 동일한 날짜를 가져야 하는 이유는 무엇인가요?
호기심은 접어두고, Rails 콘솔에 익숙하시다면(단, 만에 하나를 대비해 먼저 백업하는 것이 좋은 관행입니다) API나 Rails 콘솔을 통해 이 작업을 수행할 수 있을 것입니다.
이 주제에서 관련 API에 대한 정보를 찾을 수 있습니다 - Reverse engineer the Discourse API
또한 Administrative Bulk Operations 에는 다양한 Rails 기법에 대한 예제가 몇 가지 있어, 필요로 하는 것을 구축하거나(또는 무엇을 검색해야 하는지 아이디어를 얻기 위해) 활용할 수 있습니다.
여전히 추가 지원이 필요합니다. 다시 한번 올려드립니다.
이렇게 해봤는데 아무 변화가 없는 것 같지만, 에러도 안 나요.
Jon의 제안에 따라, 이는 Rails 콘솔 버전입니다.
cd /var/discourse
./launcher enter app
rails c
그리고 특정 토픽의 경우:
TopicTimestampChanger.new(topic: Topic.with_deleted.find(TOPIC_ID), timestamp: Time.now()).change!
조건 없이 모든 토픽에 대해:
Topic.find_each do |topic|
TopicTimestampChanger.new(topic: topic, timestamp: Time.now()).change!
end
updated_at도 변경하는 것이 좋습니다.
