Ajouter des likes par programmation ?

Lors de l’importation dans Discourse, un message important a perdu 100 “j’aime” lors de la transition (je n’ai pas réussi à le récupérer correctement). Je préfère ne pas réexécuter le script d’importation dans ce cas.

Si j’ai la liste des utilisateurs qui ont aimé le message, quelle est la meilleure façon de les ajouter ? Existe-t-il une commande rake ?

Ce que je ferais, c’est examiner le script d’importation qui importe les likes pour voir ce qu’il fait pour ajouter les likes, puis le faire dans la console Rails. Je suis à peu près certain qu’il s’agit d’une PostAction.

Je suis à peu près certain qu’il n’existe pas une telle commande rake, car c’est une demande assez inhabituelle (principalement, je relancerais le script d’importation), mais je n’ai pas regardé.

3 « J'aime »

Merci pour votre réponse. Je suis nerveux à l’idée de relancer le script d’importation car cela fait presque 6 mois et je ne suis pas sûr des effets secondaires qu’il pourrait avoir dans les cas limites où les anciennes données interagissent avec les nouvelles données.

Voici la fonction d’aide que j’ai utilisée dans mon script d’importation.

Voici le code pertinent :

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

Je vais exécuter quelque chose de similaire à ceci. Merci !

3 « J'aime »

Je serais assez nerveux aussi !

Youpi ! On ne sait jamais si une réponse aussi vague que « Eh bien, ce que je ferais. . . » sera utile.

Si vous allez coller des choses dans la console Rails, une astuce pratique à connaître est que si vous terminez vos lignes par un ;, vous ne serez pas dirigé vers un pager less pour voir les résultats de la dernière instruction. (Si vous écrivez une boucle appropriée, ou exécutez un script, vous n’avez pas besoin de cette astuce.)

Bonne chance !

2 « J'aime »

Si quelqu’un veut faire ça, voici ce qui a fonctionné pour moi. Ouvrez la console Rails et exécutez :

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

Évidemment, vous devrez remplacer l’ID du post et le nom d’utilisateur.

2 « J'aime »

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