¿Añadir likes programáticamente?

Durante la importación a discourse, una publicación importante perdió 100 “me gusta” en la transición (no pude rasparla correctamente). Prefiero no volver a ejecutar el script de importación en este caso.

Si tengo la lista de usuarios a los que les gustó la publicación, ¿cuál es la mejor manera de agregarlos? ¿Hay algún comando rake?

Lo que haría sería mirar el script de importación que importa los “likes” para ver qué hace para añadir los “likes” y luego hacerlo en la consola de Rails. Estoy bastante seguro de que es una PostAction.

Estoy bastante seguro de que no existe tal comando rake, ya que es una solicitud bastante inusual (principalmente, volvería a ejecutar el script de importación), pero no lo he mirado.

3 Me gusta

Gracias por la respuesta. Estoy nervioso por volver a ejecutar el script de importación, ya que ha pasado casi 6 meses y no estoy seguro de qué tipo de efectos secundarios podría tener en casos extremos donde los datos antiguos interactúan con los datos nuevos.

Aquí está la función auxiliar que utilicé en mi script de importación.

Aquí está el 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
...

Ejecutaré algo similar a esto. ¡Gracias!

3 Me gusta

¡Yo también estaría bastante nerviosa!

¡Yupi! Nunca se sabe si una respuesta tan vaga como “Bueno, lo que yo haría…” será de alguna utilidad.

Si vas a pegar cosas en la consola de Rails, un truco útil que debes saber es que si terminas tus líneas con un ; no te enviará a un paginador less para ver los resultados de la última instrucción. (Si escribes un bucle adecuado o ejecutas un script, no necesitarás este consejo).

¡Buena suerte!

2 Me gusta

Si alguien quiere hacer esto, aquí está lo que me funcionó. Abre la consola de Rails y ejecuta:

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

Obviamente, tendrás que reemplazar el ID de la publicación y el nombre de usuario.

2 Me gusta

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