和 rails 4.2 deliver_later 邮寄者

resque rails 4.2 deliver_later Mailers

我有一份 Ruby 关于 Rails 的申请,我需要在面试前一天发送申请人提醒邮件。为此,我计划使用 The Rescue Scheduler,我使用的是 rails v 4.2。我有运行redis服务器我的代码如下:

    def sendemails
        @user2=User.new( :firstname=> "Betterlucknexttime",:email=>)
        SendEmailJob.new.perform(@user)
    end

并在发送电子邮件文件中

    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] Could not log "enqueue.active_job" event. URI::GID::MissingModelIdError: Unable to create a Global ID for User without a model id. app/jobs/send_email_job.rb:5:in perform'
app/controllers/adminusers_controller.rb:45:in sendemails'

一般来说,当我不使用 deliver_later 选项时,我的电子邮件会立即送达。但是,我需要使用 deliver_later 来发送这些电子邮件作为将来的提醒。非常感谢您的帮助!

因为您正在做 User.new,所以您没有将该用户保存到数据库中。当作业开始时,数据库中没有用户可以拉取。如果您改为 User.create,这应该会按预期工作。

这里有一篇 link 到一篇描述活动作业及其使用方法的文章:http://www.sitepoint.com/new-rails-shiny-activejob/