大家好。过去几周我一直在为我的 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