こんにちは、コミュニティの皆様。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