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

Ruby on rails 3 Rails 3 Actionmailer-如何仅在电子邮件存在时发送,ruby-on-rails-3,actionmailer,Ruby On Rails 3,Actionmailer,我有一个Rails 3应用程序向多(2)个收件人发送电子邮件。第一个收件人是必需的,但第二个不是必需的。如果第二个收件人为空,我会收到一个错误。如果为空,如何绕过辅助电子邮件而不出错 def email_approvers(invoice) @subject = 'Invoice Approval Request' @body["invoice"] = invoice @recipients = invoice.approver_ema

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

  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
您应该看到(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,因此前面的代码将起作用):


谢谢你的提示。你能帮我了解一下那种方法的基本原理吗?我不太明白…对不起,我只是在看留言。我将编辑答案并添加示例谢谢。当备用审批人电子邮件为空时,我会收到以下错误:
NoMethodError(未定义的方法“encoding”[)joeschmo@email.com“,“@email.com”]:Array)
噢,我知道为什么会这样。在发票模型中,我有另一种方法将email.com附加到备用审批人的用户名中:
def alternate\u approver\u email self.alternate\u approver\u email=self.alternate\u approver\u username+“@email.com”end
那么,我如何修复该方法以忽略空值?您可以始终创建方法收件人,在该方法中,将方法alternate_approver_email的结果分配给一个变量,并检查该变量是否!=“”(同样,在这种情况下,您需要修改方法alternate\u approver\u email,因此如果self.alternate\u approver\u email为空或null,则返回空字符串)。我将为您的案例添加代码。
def alternate_approver_email
   self.alternate_approver_email = !self.alternate_approver_username.nil? ? self.alternate_approver_username + "@email.com" : nil
end