Discourse로 가져오는 과정에서, 주요 게시물이 이전 과정에서 좋아요 100개를 잃었습니다(스크래핑을 제대로 하지 못했기 때문입니다). 이 경우 가져오기 스크립트를 다시 실행하고 싶지 않습니다.
좋아요를 누른 사용자 목록을 가지고 있다면, 이들을 추가하는 가장 좋은 방법은 무엇인가요? rake 명령어가 있나요?
Discourse로 가져오는 과정에서, 주요 게시물이 이전 과정에서 좋아요 100개를 잃었습니다(스크래핑을 제대로 하지 못했기 때문입니다). 이 경우 가져오기 스크립트를 다시 실행하고 싶지 않습니다.
좋아요를 누른 사용자 목록을 가지고 있다면, 이들을 추가하는 가장 좋은 방법은 무엇인가요? rake 명령어가 있나요?
제가 할 일은 좋아요를 가져오는 import 스크립트를 살펴서 좋아요를 추가할 때 어떤 처리를 하는지 확인한 뒤, 그 작업을 Rails 콘솔에서 실행하는 것입니다. PostAction일 가능성이 매우 높습니다.
이러한 rake 명령은 존재하지 않을 것이라고 꽤 확신합니다. 상당히 비일상적인 요청이기 때문입니다(대부분의 경우 단순히 import 스크립트를 다시 실행하면 됩니다). 다만 아직 직접 확인해 보지는 않았습니다.
답변 주셔서 감사합니다. 6개월 가까이 지난 시점이라 다시 가져오기(import) 스크립트를 실행하는 것이 걱정됩니다. 오래된 데이터와 새로운 데이터가 상호작용하는 엣지 케이스에서 어떤 부작용이 발생할지 확실하지 않기 때문입니다.
아래는 가져오기 스크립트에서 사용했던 헬퍼 함수입니다.
관련된 코드는 다음과 같습니다.
created_by = User.find_by(id: user_id_from_imported_user_id(params[:user_id]))
post = Post.find_by(id: post_id_from_imported_post_id(params[:post_id]))
if created_by && post
PostActionCreator.create(created_by, post, :like, created_at: params[:created_at])
created += 1
...
이와 유사한 방식으로 실행할 예정입니다. 감사합니다!
저도 꽤 걱정될 것 같습니다!
좋아요! "음, 나는 이렇게 할 거야…"라고 모호하게 답변을 제공할 때 그것이 실제로 도움이 될지 알 수 없는 법입니다.
Rails 콘솔에 코드를 붙여넣을 때 알아두면 유용한 팁이 하나 있습니다. 줄을 ;로 끝내면 마지막 문장의 결과를 보기 위해 less 페이지너로 넘어가지 않습니다. (적절한 루프를 작성하거나 스크립트를 실행하는 경우 이 팁은 필요하지 않습니다.)
행운을 빕니다!
이 방법을 시도해보고 싶은 분들을 위해 제가 사용했던 방법을 공유합니다. rails 콘솔을 열고 다음을 실행하세요:
p = Post.find(31871)
u = User.find_by(username:"xxx")
PostActionCreator.create(u, p, :like, created_at: Time.now)
물론 게시물 ID와 사용자 이름은 직접 변경해야 합니다.