2012-12-15 67 views

回答

1

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

在领域驱动设计,埃文斯定义了一个服务作为为单独矗立在模型的接口提供一种操作 。在其他 单词中,服务是一种行为,而不是事物。我们不应将 操作强制为一个现有的对象,而应将其封装在单独的无状态服务中。

...

域服务脚本涉及多个领域对象用例 。强制该逻辑进入域 对象很尴尬,因为这些用例通常涉及任何单个对象责任范围外的规则。

服务层是许多其他Web应用程序MVC框架中的一个常见功能,当许多Rails应用程序选择使用胖模型不提供问题域中适当的责任封装时。

不知道更多恐怕我不能提供更具体的答案。我的下一步将是尝试考虑应该命名这个服务。它是一个建立我们有名的工厂吗? Do完成了我们可以命名的特定角色吗?

+0

呵呵,我现在已经把这样的代码放到'lib/services'里了!很高兴知道我并不孤单:) –

+1

@SergioTulentsev你当然不是一个人。然而,我会将服务添加到'app/services'。它们是你的应用程序的重要组成部分,应该像这样组织起来,它也有助于防止'lib'成为一个全面的。我所处理的应用程序通常会在默认的Rails应用程序中找不到'app'下的几个子文件夹。不要害怕根据需要添加自己的内容。 – Jonah

+0

好主意,其实。会尝试。 –

0

取决于这些方法实际做什么,但/lib可能是一个好点。

+0

作为回答,他们做了一些计算,并创建了一个详细的数据结构,由控制器的视图和resque worker发送的电子邮件使用。 – shishirmk

相关问题