Jak zmusić mailera do nie wysłania maila

Wysyłam wiadmości email w tle przy użyciu Resque + Resque::Mailer
ClientMailer.welcome(client.id).deliver

def welcome(client_id) @client = Client.find client_id mail({ :to => @client.email, :subject => 'Witaj!' }) end
Czasami przy długiej kolejce obiekt klient już nie istnieje w bazie danych gdy worker próbuje wykonać zadanie

Jak to przerobić aby w przypadku braku klienta mail nie został wysłany

Coś na tą nutę.

def welcome(client_id) if @client = Client.find_by_id client_id mail({ :to => @client.email, :subject => 'Witaj!' }) else ?????? end end

miałem podobny problem w jednym projekcie i okazało się że nie da się powstrzymać mailera przed wywołaniem metody deliver. Rozwiązałem to w ten sposób:

class MockMail < Mail::Message def deliver false end end
i w mailerze

#some monkey patching to prevent email to be sent (or more precisely to mock mail) def initialize(method_name=nil, *args) @_message = MockMail.new if some_condition_that_prevents_email_to_be_send end

moze by jakoś użyć do tego email interceptora http://asciicasts.com/episodes/206-action-mailer-in-rails-3 (opisany na końcu) ?

Interceptor wygląda obiecująco ale chyba tylko zmienia odbiorcę email-a. Chyba będę musiał monkey patching @rajah użyć.
Dzięki za pomoc