ruby-on-rails – 在Rails中创建新模型实例时发送电子邮件的最佳方式?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在Rails中创建新模型实例时发送电子邮件的最佳方式?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个具有以下模型的应用程序:用户,任务和分配.每个分配属于用户和任务(或者换句话说,通过分配将任务分配给用户).

用户完成任务后,分配将标记为完成,应用程序会立即创建新的分配(或者换句话说,将任务分配给其他人).

创建此新作业后,我想立即向新受让人发送电子邮件.我知道我可以通过以下三种方式之一做到这一点:

>在我的控制器中明确发送电子邮件.
>在Assignment模型的回调中发送电子邮件.
>在Assignment模型上创建一个观察者,并在after_create中发送电子邮件.

人们认为哪种选择最好,为什么? #1对我来说似乎很糟糕,因为我不想记得在每个可能完成作业的动作中发送它.我听说有几个人说Rails观察员很糟糕,应该避免,但我不确定他们是不是我应该信任的人.还有其他意见吗?

解决方法

你是对的,第一种方式不是一个好方法.出于几个原因,观察者是我的首选方式.

首先,如果您使用TDD(测试驱动开发),您可以关闭观察者以更纯粹地测试模型,而不会在每次创建时触发邮件程序创建.然后你可以单独测试邮件和观察者.

其次,分离回调的想法创造了更清晰的代码.回调并不是模型的一部分,它们是事件.您的模型包含运行自身所需的函数属性,回调(由观察者实现)是单独的事件处理程序.

也就是说,我不认为你的第二个选择是“坏”或不太专业.无论哪种方式都可以在模型级别工作,而不是控制器或(甚至更糟糕的)视图.

猜你在找的Ruby相关文章