循环工作,但邮件不

时间:2013-01-14 19:46:48

标签: ruby-on-rails

我有一种方法,基本上会发出有人在我的应用中提交表单的通知。我最近更改了我的模型,以便通过添加user_designations模型来处理所有分配(用户被分配到哪所学校等)来通知多个人。

方法:

  def new_message(applicant)
    @applicant = applicant
    @applicant.school.users.each do |user|
        mail(:to => user.email, :subject => "Submitted Application")
    end
  end

对象:

class Applicant
  belongs_to :school

class School 
  has_many :applicants
  has_many :user_designations
  has_many :users, :through => :user_designations

class User 
  has_many :schools, :through => :user_designations
  has_many :applicants, :through => :schools

邮件功能仅适用于循环的最后一次迭代。我也遇到了错误:

  

#School的未定义方法`user':0x007fe064700890

基于这些少量信息的任何想法?

1 个答案:

答案 0 :(得分:1)

在ActionMailer子类中,每个邮件程序操作在调用时构造邮件消息的内部表示,以供Rails传递。在你的循环中,你只是一遍又一遍地重建同一个邮件消息,所以只有循环的最后一次迭代才能存活 - 这就像ActionMailer的编写方式一样。

如果您想向多个收件人投放,您可以选择以下几种方式:

  • 使用您调用邮件程序的循环(Mailer.new_message(...).deliver
  • 在邮件中使用To / CC / BCC中的多个地址