2013-01-22 159 views
3

简单的问题。什么是首选的,为什么,或根本没有关系? 法术宝石例如:重定向和登录或登录和重定向?

if @user.save 
    redirect_to index_path 
    auto_login(@user) 

OR

if @user.save 
    auto_login(@user) 
    redirect_to index_path 

只是一个地方的skipment,一个行不,也许事情多,但什么是更好的,更安全,为什么还是它真的很喜欢没有重要性?

回答

0

只要您为您的redirect_to调用提供有效参数,订单并不重要。 redirect_to如果您没有提供有效的参数,将会抛出异常,因此auto_login将不会运行,但是您将不会看到redirect_to的错误,除非您执行的操作非常错误,例如传入nil选项,或者您已经调用redirect_to该方法已经。

我倾向于更喜欢redirect_to来最后,因为从控制流的角度来看它是有意义的。它让你大致了解Rails在你的控制器动作中执行所有代码后会带你的位置,它也可能会阻止你多次调用redirect_to并导致DoubleRenderError

如果你看redirect_to documentation并点击“显示源”链接,你可以看到它基本上只设置变量,所以你可以真正地调用它,无论你想要的。 redirect_to看起来类似于您在其他语言中看到的return声明,但它不会像一个行为,所以请牢记这一点。这只是一种在控制器上设置某种状态的方法。

+0

并请注意,您可以'在动作redirect_to'多次,只要确保各分支机构您的代码可能不会导致它被多次调用。 –

0

我会先登录后重定向。

您重定向到的位置可能取决于登录的用户。它可能不适用于您的情况,但在其他情况下可能会发生,并且可能会在以后开发您的应用程序。

例如,如果索引路径被改变,以使其取决于用户是否或没有登录不同的位置,它的事项是否之前或重定向之后登录很大。然后,如果您重定向之后登录,你会重定向到该版本的路线,为用户未登录。