我有一个rails控制器和一个resque工作器。两者都有一些共同的功能。我应该在哪里放置这些函数,以便遵循DRY原则和Rails约定?
答案 0 :(得分:1)
对我而言,这听起来像服务层的好例子。我的一位同事写了一个很好的概念摘要:http://blog.carbonfive.com/2012/01/10/does-my-rails-app-need-a-service-layer/
在域驱动设计中,Evans将服务定义为操作 提供作为模型中独立的界面。其他 单词,服务是一种行为,而不是一种东西。而不是强迫 对现有对象的操作,我们应该把它封装在一个 独立的无国籍服务。
...
域服务编写用例脚本 涉及多个域对象。强制将此逻辑强制转换为域 对象很尴尬,因为这些用例通常涉及外部规则 任何一个对象的责任。
服务层是许多其他Web应用程序MVC框架中的常见功能,当胖模型不能在其问题域中提供适当的职责封装时,许多Rails应用程序会选择使用这些功能。
我不知道更多,恐怕无法提供更具体的答案。我的下一步是尝试考虑应该命名的服务。它是一个建造我们有名字的工厂吗?我们可以履行一个特定的角色吗?
答案 1 :(得分:0)
取决于这些方法的实际用途,但/lib
可能是一个好地方。