Ruby on rails 在对用户进行身份验证后立即处理创建

Ruby on rails 在对用户进行身份验证后立即处理创建,ruby-on-rails,ruby,authentication,devise,Ruby On Rails,Ruby,Authentication,Devise,我有一个评论管理员。我允许来宾(未经身份验证的用户)查看用于发布新评论的表单,并允许他们提交该表单 现在,我想在用户提交表单后对其进行身份验证。到目前为止我已经知道了 class CommentsController before_filter :authenticate_user!, only: [:create] def create @comment = Comment.new params[:comment] @comment.save! redirec

我有一个评论管理员。我允许来宾(未经身份验证的用户)查看用于发布新评论的表单,并允许他们提交该表单

现在,我想在用户提交表单后对其进行身份验证。到目前为止我已经知道了

class CommentsController
  before_filter :authenticate_user!, only: [:create]

  def create
    @comment = Comment.new params[:comment]
    @comment.save!
    redirect_to @comment
  end
end
所以现在,当用户提交评论时,他们会被带到登录页面,并能够进行身份验证。但是,在他们这样做之后,用户被重定向回应用程序的根目录,并且注释永远不会被创建,只是丢失了

现在,如果您调用
authenticate\u user
在执行GET操作之前,在用户进行身份验证之后,它们将被重定向到其原始目标。这似乎不是POST请求的情况


那么,如何在用户验证后立即处理
create
操作呢

这里有两种可能有效的方法:
1.存储用户所在的位置,将其存储在会话中,并在登录后将其重定向回表单(您可能还希望将其注释存储在会话中,这样他们就不必再次键入)。
2.只需将注释存储在会话中,并在身份验证完成后保存即可

Deviate wiki提供了关于这两个选项中前者的一些信息: