新博客,介绍 Fengche.co 中为什么使用 Observer,希望和大家一起交流 :)
http://yangzhuoyu.com/why-we-use-rails-observer/
最近在一个项目重构把 Observer 都拿掉了,把所有的相关逻辑移到 services 里面,更方便测试 各种逻辑也更容易重用及测试,model 承担的责任也都减少。当然简单的场景 observer 应该够用。
#1 楼 @rociiu :plus1:
#1 楼 @rociiu 欢迎分享
#1 楼 @rociiu 嗯,复杂的场景我们也用 Service。而 Observer 里主要是做那些很小很快的事情。
我記得 Rails 4 是去掉 Observer 的……如果是小事情我更傾向於 callback,不過就像 @poiyzy 說的有時感覺不那麼 OO -_-
#1 楼 @rociiu 能举个例子不? 什么情况下 observer 够用,啥情况下 service 更合适?
Observer 是个坑,Rails 2 的时候我就停止使用了
@xmonkeycn 影响你测试的时候 我的目的是减少 model 的 responsibilities
#7 楼 @swordray 哦,我记得 redmine 里面还有大量的 observer..
#9 楼 @small_fish__ 个人不建议阅读 RedMine 的代码
#1 楼 @rociiu 怎么选择用 concerns,还是 services?只使用 services 了?
@rociiu 我觉得你应该单独发一篇文章出来,仔细解释一下 Observer 的问题和如何用 Services 层去拆解和降低 Model 的复杂度。
Observer 不还是 Callback 么。还不如用N2O