我有一个Ruby on Rails应用程序,我需要在面试前一天发送申请人提醒邮件。为此,我计划使用The Rescue Scheduler,我正在使用rails v 4.2。我运行了redis服务器,我的代码如下:
def sendemails
@user2=User.new( :firstname=> "Betterlucknexttime",:email=>)
SendEmailJob.new.perform(@user)
end
并在sendEmail文件中
class SendEmailJob < ActiveJob::Base
queue_as :default
def perform(user)
UserMailer.welcome_email(user).deliver_later
end
end
在config / developement中我设置了config.active_job.queue_adapter = :resque
我检查了我的日志文件,这就是我所看到的:
[ActiveJob]无法记录“enqueue.active_job”事件。 URI :: GID :: MissingModelIdError:无法为用户创建全局ID 没有型号ID。 app / jobs / send_email_job.rb:5:执行中。
app / controllers / adminusers_controller.rb:45:在sendemails'
我很一般,当我不使用deliver_later选项时,我会立即收到我的电子邮件。但是我需要使用deliver_later来发送这些电子邮件作为将来的提醒。非常感谢您的帮助!
答案 0 :(得分:3)
由于您正在使用User.new,因此您不会将该用户保存到数据库中。当作业开始时,数据库中没有用户来拉。如果你改为User.create,这应该按预期工作。
以下是描述有效作业及其使用方法的文章的链接:http://www.sitepoint.com/new-rails-shiny-activejob/