2011-08-24 30 views
5

Tôi là NOOB đang cố gắng làm việc với delay_job.cập nhật bảng người dùng sau khi email công việc bị trì hoãn thành công đã gửi

Tôi muốn cập nhật Mô hình người dùng sau khi thư được gửi thành công bằng cách sử dụng công việc bị trì hoãn.

Gửi email:

UserMailer.delay.welcome_email(user) 

nếu thư được gửi thành công làm như sau:

User.update_attributes(:emailed => true) 

Làm thế nào tôi có thể nhận được một cuộc gọi lại hoặc kích hoạt khi email được gửi thành công?

Trả lời

9

Bạn cần tạo đối tượng Công việc thay vì gọi trình trợ giúp #delay. Bạn có thể sử dụng móc success để thực thi cuộc gọi lại.

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

Thật tuyệt vời. Tôi sẽ cho nó nó một cơ hội. Cảm ơn Simone đó là công cụ tuyệt vời. – chell

Các vấn đề liên quan