Ruby on Rails - получение электронной почты пользователя из базы данных в задаче Rake - PullRequest
0 голосов
/ 01 июня 2018

У меня есть этот метод Mailer и задача Rake, которые позже запланированы с помощью Cron Job и автоматизированы с помощью Gem. Когда бы я ни отправлял электронное письмо пользователям:

# Mailer:

class MailCourseWarnMailer < ActionMailer::Base
  def course_available(user)
    @user = user
    mail(to: @user.email, subject: "Curso disponível")    # ... email sending logic goes here
  end
end

# Task
require 'rake'
desc 'send digest email'
task :send_warn_course, [:user_email] => :environment do |t, args|
  user = MailCourseWarn.find_by_email args[:user_email]
  MailCourseWarnMailer.course_available(user).deliver!
end

# Model 
class MailCourseWarn < ActiveRecord::Base
  belongs_to :course

  validates :name, :email, presence: true

end

В настоящее время я запускаю задачу следующим образом: rake send_warn_course['user@email.com'] но мне нужно, чтобы это было автоматически, чтобы при запуске rake send_warn_course задача Rake отправляла всем пользователям в моей БД.

Любые идеи Как я могу это сделать?Спасибо.

1 Ответ

0 голосов
/ 01 июня 2018

Найдите пользователей, которым требуется электронная почта, и переберите их.Конечно, вы указываете, каким пользователям нужно электронное письмо в базе данных, так что вы просто захотите запросить все эти пользовательские записи, перебрать их и затем отправить электронное письмо.

task :send_warn_course, [:user_email] => :environment do |t, args|
  MailCourseWarn.where(needs_warned: true).each do |user|
    MailCourseWarnMailer.course_available(user).deliver!
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...