我正在尝试在注册我的应用程序时延迟发送给用户的通知电子邮件。电子邮件是使用ActionMailer
我调用的 发送的InitMailer
。我试图推迟工作的方式是使用collectiveidea的delayed_job
https://github.com/collectiveidea/delayed_job。为此,您可以看到我handle_asynchronously
在定义方法后指定initial_email
:
class InitMailer < ActionMailer::Base
default :from => "info@blahblahblah.com"
def initial_email(user)
@user = user
@url = "http://www.blahblahblah.com"
mail(:to => user.email,
:subject => "Welcome to my website!"
)
end
handle_asynchronously :initial_email
end
但是,我在日志文件中遇到参数错误"delayed_job.log"
:
Class#initial_email failed with ArgumentError: wrong number of arguments (1 for 0) - 5
failed attempts
供您参考,电子邮件使用以下行在控制器中发送:
@user = InitUser.new(params[:init_user])
InitMailer.delay.initial_email(@user)
此外,当我没有延迟地设置我的代码时,电子邮件发送没有问题(除了它减慢了我的应用程序等待 gmail 服务器的速度)
这里的错误在哪里?我怎样才能让延迟的邮件正确发送?