Aggiungere Mi piace programmaticamente?

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.

3 Mi Piace

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
...

Eseguirò qualcosa di simile a questo. Grazie!

3 Mi Piace

Sarei piuttosto nervoso anch’io!

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.)

Buona fortuna!

2 Mi Piace

Se qualcuno vuole farlo, ecco cosa ha funzionato per me. Apri la console di Rails ed esegui:

p = Post.find(31871)
u = User.find_by(username:"xxx")
PostActionCreator.create(u, p, :like, created_at: Time.now)

Ovviamente dovrai sostituire l’ID del post e il nome utente.

2 Mi Piace

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.