【问题标题】:Ruby on Rails - Get user email from database in a Rake TaskRuby on Rails - 在 Rake 任务中从数据库获取用户电子邮件
【发布时间】:2018-06-02 03:09:18
【问题描述】:

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

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

【问题讨论】:

    标签: ruby-on-rails actionmailer rake-task


    【解决方案1】:

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

    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
    

    【讨论】:

    • 我将删除不再需要的:user_email 参数。
    猜你喜欢
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2013-05-01
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    相关资源
    最近更新 更多