2013-07-01 5 views
0
가 그냥 몇 가지 상황에 대한

변수 방법 이름으로 우편물을 지연 내가 문자열에 따라 다르게 다른 방법을 호출 할 수있는 방법 (메서드 호출의 일부로서 일명 문자열 변수) 예를 들어Sidekiq는

:?. 나는 (내가

NotificationMailer.send을 할 수있어 "# {email_t YPE} _email "user.id)

NotificationMailer.welcome_email (user.id)/NotificationMailer.banned_email (user.id)을 호출/ NotificationMailer.upgrade_email (user.id)

하지만 난 (지연 부분에 추가)를 호출 어떻게

Notification.delay.welcome_email (user.id) ?

그냥 NotificationMailer.delay.send("#{email_type}_email", user.id)을 사용할 수 있습니까?

답변

1

각 사용자를 가지고 다른 통지 다양한 방법과 ActionMailer의 NotificationMailer 개체가 가정하면, 백그라운드에서 전자 메일을 보낼 수있는 간단한 Sidekiq 작업을 작성할 수 있습니다

class NotificationWorker 
    include Sidekiq::Worker 

    def perform(notification_type, user_id) 
    user = User.find(user_id) 
    NotificationMailer.send(notification_type, user).deliver 
    end 
end 

이제는이 작업을 호출하여 비동기 알림 이메일을 대기열에 넣을 수 있습니다.

NotificationWorker.perform_async('welcome_email', user.id)