我应该在Rails应用程序中存储会话代码?

时间:2013-02-18 18:41:47

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

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

我可以制作一个模块,但在那种情况下我应该在哪里存储文件? 控制器是否是进行会话管理的正确位置? 关于我的代码组织的任何建议?

由于

1 个答案:

答案 0 :(得分:2)

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

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

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

最好将所有内容保存在app/controllers或某个子目录,子子目录等中.Rails自动加载取决于与模块名称空间匹配的路径,因此A::B::C属于{{1} }}。不要像Java等那样深入。只需要保持组织所需的目录/模块数量。

注意:虽然控制器在自己的模块中没有问题,但根据我的经验,模型应该保留在根目录中,例如app/controllers/a/b/c.rb,否则你会遇到问题。

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

顺便说一下,你没有询问,可能已经有了在会话中存储最近访问过的页面的代码,但这里有类似的问题/答案: