Если я хочу пересчитать количество реакций и обновить сводку, есть ли способ это сделать?
Например: bundle exec rake reactions:recount
Если я хочу пересчитать количество реакций и обновить сводку, есть ли способ это сделать?
Например: bundle exec rake reactions:recount
Будет ли это обработано фоновым заданием jobs::EnsureDbConsistency?
Вы можете запустить его вручную со страницы /sidekiq/scheduler, если хотите ускорить процесс и проверить, пересчитает ли это ваши счетчики.
Однако, если вы сможете немного подробнее рассказать, зачем вам нужно их пересчитывать, это может добавить важный контекст.
Спасибо за ваш ответ. Я проводил тестовый импорт реакций из Xenforo в Discourse. Данные были импортированы корректно, но не отображались в сообщениях вместе с именами пользователей и прочей информацией.
Мне удалось это исправить.
Использовал следующий скрипт
RAILS_ENV=production bundle exec rails runner "
counts = DiscourseReactions::ReactionUser.group(:reaction_id).count
DiscourseReactions::Reaction.where(id: counts.keys).find_each do |reaction|
reaction.update_column(:reaction_users_count, counts[reaction.id])
end
posts_to_update = Post.where(id: DiscourseReactions::Reaction.select(:post_id).distinct)
posts_to_update.find_each do |post|
post_reactions = post.reactions.where('reaction_users_count > 0')
custom_field_value = post_reactions.map do |reaction|
{
id: reaction.reaction_value,
type: reaction.reaction_type,
count: reaction.reaction_users_count
}
end
if custom_field_value.present?
post.custom_fields['discourse_reactions_reactions'] = custom_field_value.to_json
else
post.custom_fields.delete('discourse_reactions_reactions')
end
post.save_custom_fields(true)
end
"