Hmm, parece que esto me ha pasado factura. Dado que la función postprocess_posts reemplaza los enlaces internos antiguos con la nueva URL de Discourse, había hecho una excepción en el código para los enlaces https://web.archive.org/web/20230101093741/https://MyOldForum.com/node/98765 que mi importador creó para las antiguas encuestas de Drupal en la Wayback Machine. Pero aparentemente algo salió mal, porque acabo de notar en el sitio de migración de producción que los enlaces terminaron como https://web.archive.org/web/20230101093741/https://MyOldForum.com/t/-/12345.
Entonces, ahora que ya no estoy en el contexto de un contenedor de migración, ¿el campo personalizado con el nid original del nodo de Drupal todavía está disponible en la tabla de temas de Discourse? Si es así, parecería posible hacer un reemplazo de cadenas en la consola de Rails en todos los temas con la primera publicación que contenga View this poll on the Wayback Machine y luego reemplazar
https://web.archive.org/web/20230101093741/https://MyOldForum.com/t/-/[01234567890]*
con
https://web.archive.org/web/20230101093741/http://MyOldForum.com/node/$original_nid
Aquí está mi función original de importación de encuestas:
def import_poll_topics
puts '', "importando temas de encuestas"
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']),
# Usa TEMPmyoldforum.com o de lo contrario postprocess_posts() intentará convertir el enlace Wayback Machine /node/YYY
raw: "### Ver esta encuesta en la 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