При импорте в 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 для просмотра результатов последнего оператора. (Если вы пишете полноценный цикл или запускаете скрипт, этот совет вам не понадобится.)