【问题标题】:How do not send email if it empty with rails ActionMailer如果使用 rails ActionMailer 为空,如何不发送电子邮件
【发布时间】:2015-08-19 17:08:04
【问题描述】:

如果邮件为空,如何不发送邮件。

这是我的邮件:

class UsersMailer < ActionMailer::Base
  default from: "\"Example\"<reports@example.com>"

  def report(emails)
    @users = User.where(created_at: (1.days.ago)..(Time.now))
    mail to: emails
  end
end

这里是一个 rake 任务:

task :users_browser_mail => [:environment] do
   emails = %w{me@example.com}
   UsersBrowserMailer.report(emails).deliver
end

如果@usersnil 电子邮件仍在发送,我该如何避免这种情况?

我应该在我的 rake 任务中做点什么吗?:

if @users
  UsersBrowserMailer.report(emails).deliver
end

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    将查询移到 rake 任务中。

    @users 不会存在于 rake 任务中,因为它是邮件程序中的一个实例变量。

    task :users_browser_mail => [:environment] do
       emails = %w{me@example.com}
       users = User.where(created_at: (1.days.ago)..(Time.now))
    
       UsersBrowserMailer.report(emails, users).deliver unless users.blank?
    end
    
    class UsersMailer < ActionMailer::Base
      default from: "\"Example\"<reports@example.com>"
    
      def report(emails, users)
        @users = users
        mail to: emails
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2014-12-31
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 2013-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多