Hmm, parece que isso voltou para me morder. Como a função postprocess_posts substitui links internos antigos pelo novo URL do Discourse, eu fiz uma exceção no código para os links https://web.archive.org/web/20230101093741/https://MyOldForum.com/node/98765 que meu importador criou para as antigas enquetes do Drupal na Wayback Machine. Mas aparentemente algo deu errado, porque acabei de notar no site de migração em produção que os links acabaram como https://web.archive.org/web/20230101093741/https://MyOldForum.com/t/-/12345.
Então, agora que não estou mais no contexto de um contêiner de migração, o campo personalizado com o nid original do nó Drupal ainda está disponível na tabela de tópicos do Discourse? Se sim, pareceria possível fazer uma substituição de string no console Rails em todos os tópicos com a primeira postagem que contém View this poll on the Wayback Machine e, em seguida, substituir
https://web.archive.org/web/20230101093741/https://MyOldForum.com/t/-/[01234567890]*
por
https://web.archive.org/web/20230101093741/http://MyOldForum.com/node/$original_nid
Aqui está minha função original de importação de enquete:
def import_poll_topics
puts '', "importando tópicos de enquete"
polls = mysql_query(<<-SQL
SELECT n.nid nid, n.title title, n.uid uid, n.created created, n.sticky sticky, taxonomy_index.tid tid, node_counter.totalcount views
FROM node n
LEFT JOIN taxonomy_index ON n.nid = taxonomy_index.nid
LEFT JOIN node_counter ON n.nid = node_counter.nid
WHERE n.type = 'poll'
AND n.status = 1
SQL
).to_a
create_posts(polls) do |topic|
{
id: "nid:#{topic['nid']}",
user_id: user_id_from_imported_user_id(topic['uid']) || -1,
category: category_id_from_imported_category_id(topic['tid']),
# Use TEMPmyoldforum.com ou então postprocess_posts() tentará converter o link Wayback Machine /node/YYY
raw: "### Ver esta enquete na Wayback Machine:\n**https://web.archive.org/web/20230101093741/http://TEMPmyoldforum.com/node/#{topic['nid']}**",
created_at: Time.zone.at(topic['created']),
pinned_at: topic['sticky'].to_i == 1 ? Time.zone.at(topic['created']) : nil,
title: topic['title'].try(:strip),
views: topic['views'],
custom_fields: { import_id: "nid:#{topic['nid']}" }
}
end
end