延迟作业无法在轨道中工作4

时间:2014-03-06 13:38:13

标签: ruby-on-rails

我添加了以下代码。但无法发送批量邮件。

的Gemfile

gem 'delayed_job_active_record'

控制器

def send_news_letter  

    @emails = Array.new
      if params[:newsletter].present?
        @newsletter = Newsletter.find(params[:newsletter].keys).first
      end

      if params[:students].present?
        @emails = @emails + Student.all
        #raise @emails.inspect

      end

      if params[:teachers].present?
        @emails = @emails +Teacher.all
      end


    if params[:parents].present?
        @emails = @emails + Parent.all
      end

      UserMailer.delay.send_multiple_email(@emails,@newsletter)

      redirect_to newsletters_url, :notice => "Delivering Newsletter"
  end

邮件收发器

class UserMailer < ActionMailer::Base
  default from: "from@example.com"

  def send_multiple_email(emails,newsletter)
      @emails = emails
      #raise @emails.inspect
      @newsletter = newsletter
      mail(:to => @emails.map(&:email), subject: "Deliver")
  end

end

实际上它重定向了时事通讯的索引页面。但它不会发送邮件..

1 个答案:

答案 0 :(得分:0)

你可以做的事情来检查发生了什么:

  1. 这是否正在开发中?作为初学者,我无法弄清楚如何在开发过程中同时运行bundle exec rake jobs workrails s。我不得不停止服务器并执行rake任务,然后再次启动服务器。

  2. 询问数据库(例如使用rails c)以确定作业是否已保存到数据库中。这样你就知道它已经准备就绪了。

  3. 找不到任何数据库记录?延迟作业会创建自己的表,因此显然您需要迁移数据库。根据Github使用命令:

    rails generate delayed_job:active_record

    rake db:migrate

  4. 查看有关如何使用它的Railscasts剧集。