我正在写在那里用户帐户创建我想要的一系列事件发生的应用 - 送大礼,发送电子邮件,等等。我的问题是你有没有一个解决办法是什么像这样的结构性问题,依赖注入?,观察者?或者你是否创建了一个可以处理所有这些事件的方法?我们有一个用户注册服务,但是我担心我们添加更多随机依赖的事件越多。OOP建筑师一系列基于用户创建事件
回答
这听起来像一个良好的情况下使用ActiveRecord的回调
网址:http://guides.rubyonrails.org/active_record_callbacks.html
我读到决定哪个回调符合你的情况,然后让其中包含所有“系列活动的”担心你想要发生。此外,包括对需要它的模型的关注。
希望它有帮助!
每次创建用户时,都不一定要运行回调。有些情况下数据库记录创建不等于注册。例如在单元测试中。所以,最好分离数据库操作(在活动记录中)和业务逻辑。 –
欣赏输入。 –
有关用户注册它的价值发布一个域事件由不同的子系统来处理。因此,你的对象是完全分离的。但事件驱动架构有其价格 - 这是一种难以调试和理解的方式,需要一定的纪律。
如果脱钩不是目的,你可以用额外的行为包裹服务中使用Decorator模式:
registration_service = WellconeNotification.new(UserRegistration.new)
registration_service.call(params)
这里的关键思想是分离的依赖和参数。我发现为参数的依赖和方法参数使用构造函数非常方便。
这种方法意味着有点难依赖管理和亲切的服务定位器。我建议看一下干容器和干汽车宝石。
编写所有的代码在一个服务对象可能是合理的第一步,如果你没有很多的业务逻辑或仍在收集的要求。
- 1. 维基建筑师框架
- 2. 创建基于另一列
- 3. 从JavaScript Enterpreise建筑师
- 4. 用于建筑
- 5. 建筑师与导轨应用程序
- 6. 创建基于两列
- 7. 基于下一行创建新列
- 8. 基于两个条件创建列表
- 9. 创建基于列的条件
- 10. ADOBE DTM - 基于活动CSS创建基于事件的规则
- 11. 基于技能的建筑团队
- 12. 创建基于用户的姓
- 13. Extjs通知弹出与Sencha建筑师
- 14. Enterrise建筑师MDG技术在DFD
- 15. 如何在Enterprse建筑师Sparx Systems的
- 16. Sencha建筑师的背景图像
- 17. 煎茶建筑师 - 与表单
- 18. Facebook喜欢sencha建筑师的按钮
- 19. mac上的建筑师问题
- 20. 创建基于条件
- 21. 创建基于条件
- 22. 创建基于条件
- 23. ř创建基于条件
- 24. 你怎么建筑师复杂的Rails系统
- 25. 通过一系列电子邮件创建用户
- 26. 厨师刀创建未能创建API用户
- 27. 关于建筑应用
- 28. 用于建筑x86_64的
- 29. 用Python创建一个购物车OOP
- 30. 基于另一列号在一列中创建一个描述
** **观察员:不,他们已被弃用,这是很难找到,如果观察的对象。 **注册服务**(服务对象):绝对!如果你有这种模式,你可以简单地创建将在注册服务(例如被称为其他服务对象:在'RegistrationService#perform'你可以称之为'放在userRegistration :: SendWelcomeEmail.new(self.user).perform如果自我。 user.allow_email_reception?') – MrYoshiji