0

我有一个 rails 控制器和一个 resque worker。两者都有几个功能。我应该把这些函数放在哪里,以便我可以遵循 DRY 原则和 Rails 约定?

4

2 回答 2

1

对我来说,这听起来像是一个服务层的好案例。我的一位同事写了一个很好的概念总结:http: //blog.carbonfive.com/2012/01/10/does-my-rails-app-need-a-service-layer/

在领域驱动设计中,Evans 将服务定义为作为独立于模型中的接口提供的操作。换句话说,服务是一个动作,而不是一个东西。我们应该将其封装在一个单独的无状态服务中,而不是强制对现有对象进行操作。

...

域服务编写一个涉及多个域对象的用例。将这种逻辑强制到域对象中是很尴尬的,因为这些用例通常涉及任何单个对象职责之外的规则。

服务层是许多其他 Web 应用程序 MVC 框架中的常见功能,并且当胖模型无法在其问题域中提供适当的职责封装时,许多 Rails 应用程序选择使用该功能。

如果不知道更多,恐怕我无法提供更具体的答案。我的下一步是尝试考虑应该为该服务命名。它是一个制造我们有名字的东西的工厂吗?是否履行了我们可以命名的特定角色?

于 2013-01-16T01:47:22.277 回答
0

取决于这些方法的实际作用,但/lib可能是一个好地方。

于 2012-12-15T02:14:18.143 回答