2014-03-06 63 views
0

我已添加以下代碼。但無法發送批量郵件。延遲作業不在軌道中工作4

的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: "[email protected]" 

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

end 

其實它重定向通訊的索引頁。但它不會發送郵件..

回答

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插曲。