0

在我创建的Rails应用程序中,我在控制器中有一些代码,我想知道它是否在适当的位置。代码非常不重要,它将ID存储在数组中以显示“最近查看的”页面。这大概有三行代码,但我正在考虑未来,如果此功能扩展,该怎么办?我不希望我的控制器臃肿。我应该在哪里存储会话代码在Rails应用程序中?

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

谢谢

+0

如果你粘贴你正在谈论的代码,这可能会让人们更容易给你一个很好的回应。 – rossta 2013-02-18 19:53:22

+0

我曾考虑过这个问题,但我更关心代码/文件组织的概念,并且不希望人们在语法上陷入困境。感谢您的回应!这是我在StackOverflow上的第一个问题:) – manderson 2013-02-18 20:22:37

回答

2

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

如果它适用于所有控制器,它将进入ApplicationController。如果它由某些控制器共享,而不是其他控制器,则从继承自ApplicationController的控制器继承,或使用include/extend或make a module that extendsActiveSupport::Concern(这是Rails在内部相当普遍使用的)。

而且,最好把一切都在app/controllers或一些子目录,次子目录等Rails的自动加载依赖的道路上,以匹配与模块的命名空间,所以A::B::C所属app/controllers/a/b/c.rb。不要让它像Java一样深入,只需要保持组织的目录/模块的数量即可。

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

如果你能帮到的话,我也会避免在会话中存储太多。代之以存储在数据库中(或长寿命的cookie,如果它是浏览器环境特定的)。例如,如果某人注销并且他们正在查看一条记录,则他们可能想要稍后重新登录并且有一个包含该记录链接的列表。

BTW-你不问,可能已经有在会话中存储最近访问过的网页代码,但这里有类似的问题/回答:

+2

非常棒的答案,谢谢!这是我在StackOverflow上的第一个问题,你给了我很多好的Rails建议。 – manderson 2013-02-18 20:23:26

+0

不客气! – 2013-02-18 20:26:03

相关问题