ユーザーのインポートに関する重要な質問

こんにちは、コミュニティの皆様。Livestreet CMS のサイト向けにインポートスクリプトの学習と再作成を数週間行ってきました。スクリプトの記述は完了し、現在は整理してプルリクエストを送る段階です。

サービス経由での認証を利用しているユーザーを除き、すべてのユーザーをすでにインポート済みです。ここで質問です:Facebook や Google 経由で認証しているユーザーを、ドナーサイトから Discourse にインポートするにはどうすればよいでしょうか? 最もエレガントな解決策を見つけたいと考えています。また、Facebook ユーザーの中にはメールアドレスを持っていない人もいるという問題もあります。

ボーナス!date_added パラメータ付きの「いいね」のインポート

また、他のスクリプトで使われている古い方法では動作しないため、日付付きで「いいね」をインポートする別の方法を見つけました。

likes = mysql_query(<<-SQL
    SELECT target_id
         , user_voter_id
         , vote_date
         , target_type
      FROM #{TABLE_PREFIX}vote
     WHERE vote_direction = 1
     ORDER BY vote_date
SQL
).to_a

likes.each do |l|
  next unless user_id = user_id_from_imported_user_id(l["user_voter_id"])
  next unless post_id = post_id_from_imported_post_id("post-#{l["target_id"]}") 
  next unless user = User.find_by(id: user_id)
  next unless post = Post.find_by(id: post_id)
  PostActionCreator.create(user, post, PostActionType.types[2], created_at: Time.at(l["vote_date"])); #PostActionType.types[2] は「いいね」を表します
end