Rails 3 Actionmailer - 仅当电子邮件存在时如何发送

时间:2012-11-21 16:25:33

标签: ruby-on-rails-3 actionmailer

我有一个Rails 3应用程序向多个(2)收件人发送电子邮件。第一个收件人是必需的,但第二个收件人不是必需的。如果第二个收件人为空,我会收到错误。如果为null,如何在不收到错误的情况下绕过辅助电子邮件?

  def email_approvers(invoice)
    @subject          = 'Invoice Approval Request'
    @body["invoice"]  = invoice
    @recipients       = invoice.approver_email, invoice.alternate_approver_email
    @from             = "..."
    @sent_on          = Time.now
    @headers          = {}    
  end

1 个答案:

答案 0 :(得分:0)

您应该看到http://edgeguides.rubyonrails.org/action_mailer_basics.html#complete-list-of-action-mailer-methods(2.3.4向多个收件人发送电子邮件)。您可以使用电子邮件创建一个数组(可能在Invoice类中,您可以创建一个返回有效电子邮件数组的方法)。

在邮件中:

default :from => "..."

def email_approvers(invoice)
    @data  = invoice    
    mail :to => @data.recipients, :subject => 'Invoice Approval Request'
end

在发票模型中:

def recipients
    return alternate_approver_email.nil? ? [approver_email] : [approver_email, alternate_approver_email]
end

-

对于您的情况(如果没有值,它会将属性设置为 nil ,因此前面的代码将起作用):

def alternate_approver_email
   self.alternate_approver_email = !self.alternate_approver_username.nil? ? self.alternate_approver_username + "@email.com" : nil
end