【问题标题】:Where should I store session code in a Rails app?我应该在 Rails 应用程序中的哪里存储会话代码?
【发布时间】:2013-02-18 18:41:46
【问题描述】:

在我正在创建的 Rails 应用程序中,我的控制器中有一些代码,我想知道它是否在正确的位置。该代码相当微不足道,它将 id 存储在一个数组中以显示“最近查看”的页面。大概3行代码,但我在想未来,如果这个功能扩展呢?我不希望我的控制器臃肿。

我可以制作一个模块,但在这种情况下我应该将文件存储在哪里? 控制器是进行会话管理的正确位置吗? 对我的代码组织有什么建议吗?

谢谢

【问题讨论】:

  • 如果你粘贴你正在谈论的代码,它可能会让人们更容易给你一个好的回应。
  • 我想过,但我更想知道代码/文件组织的概念,不希望人们陷入语法的困境。感谢您的回复!这是我在 StackOverflow 上的第一个问题 :)

标签: ruby-on-rails model-view-controller controller ruby-on-rails-3.2 session-variables


【解决方案1】:

如果是特定于控制器的,请将其保存在控制器中。

如果适用于所有控制器,则进入 ApplicationController。

如果它被某些控制器共享而不是其他控制器共享,则从继承自 ApplicationController 的控制器继承,或者使用 include/extend 或 make a module that extends ActiveSupport::Concern(这是 Rails 内部相当普遍使用的)。

最好将所有内容保存在app/controllers 或某个子目录、子子目录等中。Rails 自动加载依赖于与模块命名空间匹配的路径,因此A::B::C 属于app/controllers/a/b/c.rb。不要像 Java 等那样把它弄得很深。只要有你需要的目录/模块的数量来保持它的井井有条。

注意:尽管控制器在它们自己的模块中没有那么问题,但根据我的经验,您的模型应该保留在根目录中,例如 app/models,否则您会遇到问题。

如果您能提供帮助,我也会避免在会话中存储太多。而是存储在数据库中(或长寿命 cookie,如果它是特定于浏览器环境的)。例如,如果有人注销并且他们正在查看一条记录,他们可能希望稍后重新登录并拥有一个包含指向该记录的链接的列表。

顺便说一句-您不是在问,并且可能已经有了在会话中存储最近访问过的页面的代码,但这里有类似的问题/答案:

【讨论】:

  • 很棒的答案,谢谢!这是我在 StackOverflow 上的第一个问题,您给了我很多关于 Rails 的好建议。
猜你喜欢
  • 2021-12-26
  • 2019-08-04
  • 1970-01-01
  • 2011-02-15
  • 2016-09-27
  • 1970-01-01
  • 2017-05-30
  • 2012-03-09
  • 2011-05-15
相关资源
最近更新 更多