仅针对某些情况:
我在名为notification_mailer.rb
的文件中有3种不同的方法,名为welcome_email(user_id),banned_email(user_id)和upgrade_email((user_id)。
有没有办法可以根据字符串不同地调用不同的方法? (也称为字符串变量,作为方法调用的一部分)。
例如: 我知道我可以做到
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)
吗?
答案 0 :(得分: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)