Как добавить лайки программно?

При импорте в Discourse один из основных постов потерял 100 лайков в процессе перехода (мне не удалось корректно собрать их). В данном случае я не хочу перезапускать скрипт импорта.

Если у меня есть список пользователей, поставивших лайк этому посту, какой лучший способ их добавить? Есть ли соответствующая команда rake?

Я бы посмотрел на скрипт импорта, который загружает лайки, чтобы понять, как он их добавляет, а затем выполнил бы аналогичные действия в консоли Rails. Я почти уверен, что это PostAction.

Я также почти уверен, что такой rake-команды нет, так как это довольно необычный запрос (обычно я бы просто перезапустил скрипт импорта), но я не проверял.

Спасибо за ответ. Я нервничаю из-за повторного запуска скрипта импорта, так как прошло почти 6 месяцев, и я не уверен, какие побочные эффекты он может вызвать в пограничных случаях, когда старые данные взаимодействуют с новыми.

Вот вспомогательная функция, которую я использовал в своём скрипте импорта.

Вот соответствующий код

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

Я запущу что-то похожее на это. Спасибо!

Я бы тоже сильно волновался!

Ура! Никогда не знаешь, будет ли полезен ответ такой размытой формулировки, как «Ну, я бы поступил так…».

Если вы собираетесь вставлять что-то в консоль Rails, полезный совет: если вы будете завершать строки точкой с запятой (;), вас не перекинет в пейджер less для просмотра результатов последнего оператора. (Если вы пишете полноценный цикл или запускаете скрипт, этот совет вам не понадобится.)

Удачи!

Если кто-то захочет сделать это, вот что сработало для меня. Откройте консоль Rails и выполните:

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

Очевидно, вам нужно будет заменить ID поста и имя пользователя.