首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby on Rails -在Rake任务中从数据库获取用户电子邮件

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

Stack Overflow用户
提问于 2018-06-02 03:02:02
回答 1查看 162关注 0票数 0

我有一个Mailer方法和一个Rake任务,稍后要使用Cron Job调度,并在向用户发送电子邮件时使用Gem自动执行:

代码语言:javascript
复制
# 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任务会发送给我数据库中的所有用户。

你知道我该怎么做吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-02 03:09:19

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

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50649641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档