2011-08-24 21 views
5

Gecikmiş_job ile çalışmaya çalışan bir NOOB yapıyorum.Başarılı bir şekilde gecikmeli iş e-postası gönderildikten sonra kullanıcı tablosunu güncelle

Gecikmeli iş kullanarak posta başarıyla gönderildikten sonra Kullanıcı Modeli'ni güncelleştirmek istiyorum.

Gönder email:

User.update_attributes(:emailed => true) 

nasıl e-posta başarıyla gönderilen bir geri arama veya tetikleyici alabilirsiniz:

UserMailer.delay.welcome_email(user) 

posta aşağıdakileri yapın başarıyla gönderildi olur?

cevap

9

#delay yardımcısını çağırmak yerine bir Job nesnesi oluşturmanız gerekir. Geri çağırma işlemini yürütmek için success kancasını kullanabilirsiniz.

class WelcomeEmailJob < Struct.new(:user_id) 
    def perform 
    UserMailer.welcome_email(user) 
    end 

    def success(job) 
    user.update_attribute(:emailed, true) 
    end 

    private 

    def user 
     @user ||= User.find(user_id) 
    end 
end 

Delayed::Job.enqueue WelcomeEmailJob.new(user.id) 
+0

Vay harika görünüyor. Bir deneyeceğim. Teşekkürler Simone bu harika bir şey. – chell

İlgili konular