0

仅针对某些情况:我在一个名为notification_mailer.rb.

有没有一种方法可以根据字符串以不同的方式调用不同的方法?(又名作为方法调用一部分的字符串变量)。

例如:我知道我能做到

NotificationMailer.send("#{email_type}_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)吗?

4

1 回答 1

1

假设您有一个 NotificationMailer 对象,它是一个 ActionMailer 对象,具有各种不同的通知方法,每个方法都接收一个用户,您可以编写一个简单的 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)
于 2013-08-06T14:58:42.423 回答