ruby-on-rails - 重定向和登录或登录和重定向?

标签 ruby-on-rails ruby ruby-on-rails-3 sorcery

简单的问题。什么是首选,为什么,或者它根本不重要? 魔法 gem 示例:

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

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

只是跳过一个地方,一行可能并没有那么重要,但是什么更好,更安全,为什么或者它真的不重要?

最佳答案

顺序并不重要,只要您为 redirect_to 调用提供有效参数即可。如果您未提供有效参数,redirect_to 将抛出异常,因此 auto_login 将不会运行,但您不会看到来自 redirect_to 的错误除非你做错了一些事情,比如传入 nil 选项,或者你已经在方法中调用了 redirect_to

我倾向于将 redirect_to 放在最后,因为从控制流的角度来看它是有意义的。它让您大致了解 Rails 在执行 Controller 操作中的所有代码后会将您带到哪里,它还可能有助于阻止您多次调用 redirect_to 并导致 DoubleRenderError.

如果您查看 redirect_to documentation然后点击“show source”链接你可以看到它基本上只是设置变量,所以你真的可以在任何你想调用的地方调用它。 redirect_to 看起来类似于您在其他语言中看到的 return 语句,但它的行为并不像,所以请记住这一点。这只是一种在您的 Controller 上设置某些状态的方法。

关于ruby-on-rails - 重定向和登录或登录和重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14463714/

相关文章:

mysql - Rails Mysql 结果 - fetch_fields 方法

ruby-on-rails - 将静态 JSON 文件解析为 Rails 对象

ruby-on-rails - Rails 3,浏览器后退功能

ruby-on-rails - 显示 SSHKit 调用的 rake 任务的输出

ruby-on-rails-3 - Rails 3、PaperTrail 和 Whodunnit 用户实例

ruby-on-rails - Rails 7、tailwind 和 View 组件、添加到组件的类未编译/更新

ruby - Google Sheets API V4 403 错误

ruby - 在 Ruby 中,使用 "net/http",我们必须加入 url 并自己使用 "?"进行查询?

ruby-on-rails - 模型的 Rails 灵活开放时间

ruby-on-rails - Sqlite 数据库在 OSX 中的位置