在我正在创建的Rails应用程序中,我的控制器中有一些代码,我想知道它是否在适当的位置。代码相当微不足道,它将ID存储在一个数组中以显示“最近查看过的”页面。这是大约3行代码,但我正在考虑未来,如果这个功能扩展了怎么办?我不希望我的控制器臃肿。
我可以制作一个模块,但在那种情况下我应该在哪里存储文件? 控制器是否是进行会话管理的正确位置? 关于我的代码组织的任何建议?
由于
答案 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,如果它是特定于浏览器环境的)中。例如,如果有人注销并且他们正在查看一条记录,他们可能希望稍后重新登录并有一个包含该记录链接的列表。
顺便说一下,你没有询问,可能已经有了在会话中存储最近访问过的页面的代码,但这里有类似的问题/答案: