Ruby on rails 重定向并登录还是登录并重定向?
简单的问题。什么是首选,为什么,或者根本不重要? 魔法宝石示例:Ruby on rails 重定向并登录还是登录并重定向?,ruby-on-rails,ruby,ruby-on-rails-3,sorcery,Ruby On Rails,Ruby,Ruby On Rails 3,Sorcery,简单的问题。什么是首选,为什么,或者根本不重要? 魔法宝石示例: if @user.save redirect_to index_path auto_login(@user) 或 仅仅是一个地方的一个设备,一行可能没有那么重要,但是什么更好、更安全,为什么或者它真的不重要?只要您为重定向到调用提供有效的参数,顺序就不重要了redirect\u to将抛出异常,因此auto\u login将不会运行,但您不会看到redirect\u to中的错误,除非您做了一些非常错误的事情,例如传入n
if @user.save
redirect_to index_path
auto_login(@user)
或
仅仅是一个地方的一个设备,一行可能没有那么重要,但是什么更好、更安全,为什么或者它真的不重要?只要您为
重定向到调用提供有效的参数,顺序就不重要了<如果您没有提供有效的参数,code>redirect\u to
将抛出异常,因此auto\u login
将不会运行,但您不会看到redirect\u to
中的错误,除非您做了一些非常错误的事情,例如传入nil
选项,或者您已经在方法中调用了redirect\u to
我倾向于让redirect\u排在最后,因为从控制流的角度来看,这是有意义的。在控制器操作中执行所有代码后,它让您大致了解Rails将把您带到哪里,它还可能帮助您避免多次调用redirect\u to
,并导致出现DoubleRenderError
如果您查看并单击“ShowSource”链接,您可以看到它基本上只是设置变量,因此您可以在任何地方调用它redirect\u to
看起来类似于在其他语言中看到的return
语句,但它的行为与之不同,所以请记住这一点。这只是一种在控制器上设置某些状态的方法。我会先登录,然后重定向
您要重定向到的位置可能取决于登录的用户。在您的情况下可能不是这样,但在其他情况下可能是这样,并且在以后的应用程序开发中也可能是这样
例如,如果索引路由已更改,因此它会根据用户是否登录而转到不同的位置,那么无论您是在重定向之前还是之后登录,都非常重要。如果您在重定向后登录,那么您将重定向到未登录用户的路由版本。注意,您可以在操作中多次使用redirect\u to
,只需确保您的代码可以使用的各种分支不会导致多次调用。
if @user.save
auto_login(@user)
redirect_to index_path