2011-05-03 20 views
3

我是Ruby和Rails的新手,我正在制作我的第一个应用程序。基本上我解析HTML并将其作为JSON发送到客户端。Rails结构,在这种情况下我应该使用服务层吗?

现在我有两个HTML数据源,但未来可能会有更多。正因为如此,我认为这是一个好主意,删除负责从控制器解析HTML并将其放入服务层的代码。我想出了这个结构:

  • 应用
    • 控制器
      • main_controller.rb
    • 模型
      • project.rb
      • task.rb
    • 服务
      • source1_service.rb
      • source2_service.rb

的MainController同时调用服务来获得项目和任务;每个服务都解析它自己的HTML。

这是一个很好的解决方案吗?有没有更多的RoR方式来做到这一点?

回答

3

把你的服务,你的车型目录,没有规则,所有车型必须从ActiveRecord::Base延长,但你的服务是不透明的数据模型,您的应用程序的其余部分(如果我没有理解你的权利)。理想情况下,让服务代码模仿主动记录,以便其他只使用模型代码的人不必知道它与您的Rails应用中的任何其他模型不同。

3

与Java世界不同,'服务层类'概念在RoR世界中并不真正流行/使用。从控制器中删除该代码是一个好主意(您希望控制器很薄)。但我认为你可以将它们注入你的模型。如果你觉得它太复杂了,你可以把你的额外代码分解成模块,并将这些模块混合到你的模型中。

它不是唯一的做事方式。

但是,如果解析HTML包含一些可以重用的通用逻辑,即使在另一个项目中,将它放在lib /文件夹中也是一个好主意。

+0

我喜欢使用模块和mixins的想法(尽管我不太了解它们)。我会研究并看看它是如何发展的。感谢您的建议 – 2011-05-03 16:54:10

相关问题