gpt4 book ai didi

ruby-on-rails - rails 3 : how to abort delivery method in actionmailer?

转载 作者:行者123 更新时间:2023-12-03 11:37:44 25 4
gpt4 key购买 nike

在我的邮件 Controller 中,在某些情况下(缺少数据),我们会中止发送电子邮件。

在这种情况下,如何退出 Controller 方法而不渲染 View ?

return if @some_email_data.nil?



由于 View 仍在呈现,因此没有解决问题(除非我添加了很多 nil 检查,否则在我尝试使用 @some_email_data 的每个地方都会抛出错误)

即使我做了零检查,它也会提示没有“发件人”(因为我应该在到达我设置发件人和主题的行之前做了一个“返回”。
render ... return也不行

基本上,RETURN 不会在邮件方法中返回!

最佳答案

我刚刚在这里遇到了同样的事情。

我的解决方案如下:

module BulletproofMailer
class BlackholeMailMessage < Mail::Message
def self.deliver
false
end
end

class AbortDeliveryError < StandardError
end

class Base < ActionMailer::Base

def abort_delivery
raise AbortDeliveryError
end

def process(*args)
begin
super *args
rescue AbortDeliveryError
self.message = BulletproofMailer::BlackholeMailMessage
end
end
end
end

使用这些包装邮件程序看起来像这样:
class EventMailer < BulletproofMailer::Base
include Resque::Mailer
def event_created(event_id)
begin
@event = CalendarEvent.find(event_id)
rescue ActiveRecord::RecordNotFound
abort_delivery
end
end
end

也是 posted在我的博客中。

关于ruby-on-rails - rails 3 : how to abort delivery method in actionmailer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6550809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com