我有一个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任务会发送给我数据库中的所有用户。
你知道我该怎么做吗?谢谢。
发布于 2018-06-02 03:09:19
找到需要该电子邮件的用户并对其进行迭代。您肯定是在以某种方式指出哪些用户需要数据库中的电子邮件,所以您只需要查询所有这些用户记录,迭代它们,然后发送电子邮件。
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
https://stackoverflow.com/questions/50649641
复制相似问题