我是Ruby和Rails的新手,我正在制作我的第一个应用程序。基本上我正在解析HTML并将其作为JSON发送给客户端。
现在我有两个HTML数据来源,但未来我可以拥有更多。因此,我认为删除负责从控制器解析HTML并将其放入服务层的代码是个好主意。我想出了这个结构:
MainController调用两个服务来获取项目和任务;每个服务都解析自己的HTML。
这是一个很好的解决方案吗?还有更多的RoR方法吗?
答案 0 :(得分:3)
将您的服务放在您的模型目录中,没有规则所有模型都必须从ActiveRecord::Base
扩展,但您的服务是不透明的数据模型到您的应用程序的其余部分(如果我理解你的话)。理想情况下,让服务代码模仿活动记录,以便其他只使用您的模型代码的人不必知道它与rails应用程序中的任何其他模型不同。
答案 1 :(得分:3)
与Java世界不同,“服务层类”概念在RoR世界中并不真正流行/使用。从控制器中删除该代码是个好主意(您希望控制器很薄)。但我认为你可以将它们注入你的模型。如果您觉得它变得太复杂,您可以将额外的代码分解为模块,并将这些模块混合到您的模型中。
它不是唯一的做事方式。
但是,如果解析HTML包含一些可以重用的常用逻辑,即使在另一个项目中,最好将它放在lib /文件夹中。