Hmm, il semble que cela me revienne. Puisque la fonction postprocess_posts remplace les anciens liens internes par la nouvelle URL Discourse, j’avais fait une exception dans le code pour les liens https://web.archive.org/web/20230101093741/https://MyOldForum.com/node/98765 que mon importateur avait créés pour les anciens sondages Drupal dans la Wayback Machine. Mais apparemment, quelque chose s’est mal passé, car je viens de remarquer sur le site migré en production que les liens se sont retrouvés comme https://web.archive.org/web/20230101093741/https://MyOldForum.com/t/-/12345.
Donc, maintenant que je ne suis plus dans le contexte d’un conteneur de migration, le champ personnalisé avec le nid d’origine du nœud Drupal est-il toujours disponible dans la table des sujets Discourse ? Si oui, il semblerait possible de faire un remplacement de chaîne dans la console Rails sur tous les sujets avec le premier message qui contient View this poll on the Wayback Machine et ensuite remplacer
https://web.archive.org/web/20230101093741/https://MyOldForum.com/t/-/[01234567890]*
par
https://web.archive.org/web/20230101093741/http://MyOldForum.com/node/$original_nid
Voici ma fonction d’importation de sondage d’origine :
def import_poll_topics
puts '', "importation des sujets de sondage"
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']),
# Utiliser TEMPmyoldforum.com ou sinon postprocess_posts() essaiera de convertir le lien Wayback Machine /node/YYY
raw: "### Voir ce sondage sur 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