Цикл ActionMailer для задачи rake отправляет дополнительную почту при каждом запуске - PullRequest
0 голосов
/ 03 ноября 2018

Я не могу понять это, У меня есть этот класс

class UserMailer < ActionMailer::Base
 def apps_remainder_email()
    #apps array ..which basically have 3 records in it
    apps.each do |rec||
    mail(to:  user.email, subject: 'Apps Remainder').deliver
    end
 end
end

Когда я пытаюсь вызвать вышеупомянутое в консоли rails UserMailer.apps_remainder_email, оно работает нормально и отправляет три электронных письма, но когда я добавляю это как задачу rake, это отправляет четыре вместо трех, т.е. всегда дубликат окончательного электронного письма.

Вот мое задание по рейку

task daily: [:environment] do  
 UserMailer.apps_remainder_email.deliver
end

Я думаю, это потому, что у меня есть .deliver в моей задаче, но без этого .deliver письма вообще не отправляются.

  $ rake daily --trace
    ** Invoke daily (first_time)
    ** Invoke environment (first_time)
    ** Execute environment
    ** Execute daily

1 Ответ

0 голосов
/ 03 ноября 2018

Ваш UserMailer класс не должен вызывать deliver сам по себе.

Вместо этого ваше рейк-задание должно вызвать deliver.

Итак, удалите deliver из класса UserMailer и поместите логику в задачу по рейку:

task daily: [:environment] do  
   apps.each do |rec||
      UserMailer.apps_remainder_email(rec).deliver
   end
end
...