在authenticate_user之后立即处理创建

时间:2013-05-22 21:56:46

标签: ruby-on-rails ruby authentication devise

我有一个CommentsController。我允许访客(未经过身份验证的用户)查看发布新评论的表单,并允许他们提交。

现在,我想在提交表单后验证我的用户。到目前为止,我已经知道了。

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

  def create
    @comment = Comment.new params[:comment]
    @comment.save!
    redirect_to @comment
  end
end

现在,当用户提交评论时,他们将被带到登录页面,并且能够进行身份验证。但是,在他们这样做之后,用户被重定向回应用程序的根目录,并且注释永远不会被创建,只会丢失。

现在,似乎如果您在GET操作之前调用authenticate_user!,则在用户进行身份验证后,会将其重定向到其原始目标。 POST请求似乎不是这种情况。

那么,如何在用户进行身份验证后立即处理create操作?

1 个答案:

答案 0 :(得分:0)

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

Devise wiki有一些关于前两种选项的信息:​​https://github.com/plataformatec/devise/wiki/How-To:-Redirect-back-to-current-page-after-sign-in,-sign-out,-sign-up,-update