关于导入用户的重要问题

大家好。过去几周我一直在为我的 Livestreet CMS 站点学习并重新编写一个导入脚本。脚本的编写工作已经完成,现在只需进行清理并提交拉取请求(pull request)。

所有用户也已导入,除了那些通过第三方服务进行授权的用户。问题是:如何将那些通过 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