Ruby on rails rails中register\u拦截器和after\u操作之间的差异

Ruby on rails rails中register\u拦截器和after\u操作之间的差异,ruby-on-rails,actionmailer,sidekiq,Ruby On Rails,Actionmailer,Sidekiq,我正在使用rails5以及amazonses。 我想在发送电子邮件之前限制电子邮件,因为SES无法在短时间内处理大量电子邮件,而且邮件作业正在失败 因此,我想添加一个限制利率的sidekiq工人 我应该从哪里给工作人员打电话,mail\u interceptor或after\u actions 一般来说,它们之间有什么区别?有很大的区别 邮件拦截器 在Rails中使用ActionMailer时,有一种方法可以在调用“Deliver”方法之后,但在delivery代理实际发送消息之前,挂接到出站消

我正在使用
rails5
以及
amazonses
。 我想在发送电子邮件之前限制电子邮件,因为SES无法在短时间内处理大量电子邮件,而且邮件作业正在失败

因此,我想添加一个限制利率的
sidekiq
工人

我应该从哪里给工作人员打电话,
mail\u interceptor
after\u actions


一般来说,它们之间有什么区别?

有很大的区别

邮件拦截器

在Rails中使用ActionMailer时,有一种方法可以在调用“Deliver”方法之后,但在delivery代理实际发送消息之前,挂接到出站消息。您可以将控制器中的这些拦截器视为操作过滤器之前的拦截器。 如果您需要在实际交付之前进行任何类型的修改,您将需要使用拦截器

行动后

这是控制器的回调,用于在方法或操作完成后执行某些操作


请参阅以了解更多信息。

问题

根据我对您的问题的理解,这里的问题是一个低级设计问题,即在哪里放置代码来限制和发送电子邮件

根据我的理解,
事后行动
邮件拦截
之间的区别

after_action的用例非常简单,就是在执行某个操作之后做一些事情

另一方面,
mail_拦截器
是一个可以在action mailer的邮件交付生命周期中添加的钩子。据我所知,拦截器的目的是修改某些电子邮件内容,或限制向用户发送电子邮件,或限制在特定环境下发送电子邮件,然后再向交付代理进行处理。用例更关心是否发送、发送什么或发送给谁,而不是如何发送。

在哪里放置代码?

此外,拦截器在所有电子邮件传递时都会被调用,因为它与电子邮件的生命周期相关联。例如,在重置密码电子邮件的情况下,我假设没有必要限制,也没有必要调用这段代码

基于上述假设和理解,我的观点是,将阻止电子邮件的代码放在
后操作
中比放在
邮件拦截器
中更有意义


希望这是有帮助的

你能解释一下在哪个用例中使用哪一个吗?这完全取决于你,但基于需求,我认为mail\u拦截器非常适合你。我仍然无法理解两者之间的区别,为什么在这种情况下更好?我现在只是用deliver\u调用action\u mailer类。我有一个非常直截了当的问题,这两者之间的区别是什么,你提供的链接没有帮助