Rails服务对象与lib类

mrb*_*rdo 34 ruby-on-rails ruby-on-rails-3

简短版本:什么时候应该把东西放到app/services而不是lib /.

我最近一直在服务对象路线上,但我意识到有时我不能真正决定天气我应该将某些东西提取到服务对象(我在app/services中)或者在我的lib文件夹中的类中.

我经常寻找的一件事是,如果类需要访问params或其他特定于控制器的东西(即作为初始化程序中的参数),那么我倾向于将其放入服务中.

这里的约定是什么?证明(链接)会很好:)

gyl*_*laz 71

这就是我倾向于考虑代码的方式lib/:

  • 它没有耦合到我的应用程序的域模型.
  • 它可以在其他项目中重用.
  • 它有可能成为它自己的宝石.因此,把它lib/放在这个方向的第一步.

服务:

  • 他们倾向于知道关于领域模型的内部运作的相当数量.
  • 在我的应用中执行特定于业务域的工作.
  • 倾向于与特定模型耦合.


cpu*_*y83 6

IMO,服务是您的领域的抽象。Lib 的内容是为了方便类,其他内容与您的模型不直接相关。