大規模Drupalフォーラム移行、インポータエラーと制限

うーん、これは自分に返ってきたようです。postprocess_posts関数は古い内部リンクを新しいDiscourse URLに置き換えるため、Wayback Machineの古いDrupal投票用に作成したhttps://web.archive.org/web/20230101093741/https://MyOldForum.com/node/98765リンクのコードに例外を設けていました。しかし、何かがうまくいかなかったようで、本番の移行済みサイトでリンクがhttps://web.archive.org/web/20230101093741/https://MyOldForum.com/t/-/12345のようになったことに気づきました。

移行コンテナのコンテキストに artık なくなったので、DiscourseトピックDBテーブルに元のDrupalノードのnidを持つカスタムフィールドはまだ利用可能でしょうか?もしそうであれば、Railsコンソールで、View this poll on the Wayback Machineを含む最初の投稿を持つすべてのトピックに対して文字列置換を実行し、

https://web.archive.org/web/20230101093741/https://MyOldForum.com/t/-/[01234567890]*

https://web.archive.org/web/20230101093741/http://MyOldForum.com/node/$original_nid

に置き換えることが可能だと思われます。

元の投票インポート関数は次のとおりです。

    def import_poll_topics
    puts '', "importing poll topics"

    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']),
        # TEMPmyoldforum.comを使用してください。そうしないと、postprocess_posts()がWayback Machineの/node/YYYリンクを変換しようとします。
        raw: "### View this poll on the 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