发送电子邮件更新:模型还是观察者?

时间:2009-11-10 13:27:28

标签: ruby-on-rails activerecord

我有一个Event模型,它为每个用户存储一个事件Feed。我还需要将更新通过电子邮件发送给已在其个人资料中启用电子邮件通知的用户。

从架构的角度来看,哪一个更好?

  1. 使用模型中的after_create方法调用邮件程序,因为它是业务逻辑的一部分;
  2. 使用观察者中的after_create方法调用邮件程序,因为它实际上并不在模型上运行,而且还取决于用户的设置。

3 个答案:

答案 0 :(得分:1)

我和观察员一起去。我的理由是发送通知电子邮件不是事件业务逻辑的重要部分(简单地说,事件不发送通知)。除此之外,正如Damien所说,这是一个关注点分离的问题。

请参阅讨论here

答案 1 :(得分:0)

没有“神奇”的答案,因为它是主观的 一些开发人员更愿意直接在模型中执行此操作。其他人会在观察者中这样做 你做的完全取决于你。两种解决方案都有效。

我个人更喜欢在观察者中添加它们,因为它允许我在同一个地方拥有所有用户通知,而不是一个模型中的一个和另一个模型中的其他模型。

答案 2 :(得分:0)

观察者的方法将更加灵活。如果您的电子邮件设置(收件人或服务器)发生变化,或者通知标准(每天每周一次,反之亦然),更改观察者比修改模型更简单。