Ruby on Rails - 在 Rake 任务中从数据库获取用户电子邮件

Ruby on Rails - Get user email from database in a Rake Task

我有那个 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 任务发送给我数据库中的所有用户。

任何想法我该怎么做?谢谢

找到需要电子邮件的用户并遍历他们。当然,您是在以某种方式指出哪些用户需要数据库中的电子邮件,因此您只想查询所有这些用户记录,遍历它们,然后发送电子邮件。

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