假设发送邮件以便稍后处理(即通过starling或delayed_job)。
我想知道的是从ActiveController
或ActiveRecord
发送电子邮件通知更好的做法?
我认为将它放在控制器中很有用,因为你可能想要控制是否应该发送电子邮件(即在模型保存一些其他标准后可能很重要)但是有一个地方的想法(模型)如果在保存(创建或更新等)之后从模型处理电子邮件,则发送电子邮件也是有用的。
你们中的任何人都有这种困境吗?你选择哪个,为什么?你做了完全不同的事吗?
答案 0 :(得分:9)
我个人喜欢在ActiveRecord中将所有内容组合在一起。但是,对于特定的电子邮件发送,我总是从控制器进行。想象一下,您正在运行单元测试,或者您从控制台更改了一些记录。这是我遇到的两种情况,我不希望发送电子邮件。
答案 1 :(得分:1)
恕我直言,rails是一个灵活的框架,无论您从哪种方式开始,您都可以随时从模型切换到控制器,并且几乎不费力地返回。换句话说,这不是值得花2个小时的问题。
但重要的是你已经在一个地方发送代码(通常在ActionMailer::Base
的子类中)。这样,更改发送电子邮件的位置只是移动一行代码。