Durante a importação para o Discourse, uma postagem importante perdeu 100 curtidas na transição (falhei em raspá-la corretamente). Prefiro não executar o script de importação novamente neste caso.
Se eu tiver a lista de usuários que curtiram a postagem, qual é a melhor maneira de adicioná-los? Existe um comando rake?
O que eu faria seria olhar o script de importação que importa os likes para ver o que ele faz para adicionar os likes, então faria isso no console do Rails. Tenho quase certeza que é uma PostAction.
Tenho quase certeza de que não existe tal comando rake, pois é uma solicitação bastante incomum (principalmente, eu apenas reexecutaria o script de importação), mas não procurei.
Obrigado pela resposta. Estou receoso de executar o script de importação novamente, pois já se passaram quase 6 meses e não tenho certeza de que tipo de efeitos colaterais ele pode ter em casos extremos onde dados antigos interagem com dados novos.
Aqui está a função auxiliar que usei em meu script de importação.
Aqui está o código relevante
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
...
Eba! Você nunca sabe se fornecer uma resposta vaga como “Bem, o que eu faria…” será útil.
Se você for colar coisas no console do Rails, um truque útil é que, se você terminar suas linhas com um ;, não será levado para um paginador less para ver os resultados da última instrução. (Se você escrever um loop adequado ou executar um script, não precisará desta dica.)