使用Rails的omniauth成功登录后保存Comment对象

在用户通过omn​​iauth (Twitter,Facebook或OpenID)成功登录后,我希望rails更新或存储Comment。

  1. A(未登录)用户填写评论表单。 post那个。
  2. 用户获得一个omniauth页面,她可以选择登录方式:Twitter,Facebook或OpenID。
  3. 一旦用户成功从oAuth返回,我想存储(或发布)Comment。

我有这个工作,使用会话变量,但这不是非常线程安全的:如果用户有多个评论标签打开与相同的会话,它将中断。

我应该以未发布的状态将注释保存到数据库,并在返回后切换它吗? 如果是这样,如何知道如何切换正确的评论? 问题类似于上述会话问题。

有没有办法简单地传递comment-object和omniauth,并在用户从成功登录返回时收回它?

或者我可以传递一些哈希字符串,我可以在成功返回后提取?

编辑:完成重写以简化和澄清问题。

将postID与评论文本一起存储在会话中。 在成功validation后,使用存储的ID查找post并为其构建评论对象。

更新 – 如果身份validation失败,请删除所有此类条目。