Durante l’importazione in discourse, un post importante ha perso 100 like nella transizione (non sono riuscito a fare lo scraping correttamente). Preferisco non rieseguire lo script di importazione in questo caso.
Se ho l’elenco degli utenti a cui è piaciuto il post, qual è il modo migliore per aggiungerli? Esiste un comando rake?
Quello che farei è esaminare lo script di importazione che importa i “like” per vedere cosa fa per aggiungere i “like”, quindi farlo nella console di Rails. Sono abbastanza sicuro che si tratti di una PostAction.
Sono abbastanza sicuro che non esista un comando rake del genere, poiché è una richiesta piuttosto insolita (principalmente, re-eseguirei lo script di importazione), ma non ho controllato.
Grazie per la risposta. Sono nervoso all’idea di rieseguire lo script di importazione poiché sono passati quasi 6 mesi e non sono sicuro di quali effetti collaterali potrebbe avere nei casi limite in cui i vecchi dati interagiscono con i nuovi dati.
Ecco la funzione di supporto che ho utilizzato nel mio script di importazione.
Ecco il codice pertinente:
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
...
Evvai! Non si sa mai se fornire una risposta vaga come “Beh, quello che farei io…” sarà utile.
Se incollerai del codice nella console di Rails, un trucco utile da sapere è che se termini le righe con un ; non verrai spinto in un paginatore less per vedere i risultati dell’ultima istruzione. (Se scrivi un ciclo corretto o esegui uno script, non hai bisogno di questo suggerimento.)