0

我有一种方法,它基本上会发出通知,告知有人在我的应用程序中提交了表单。我最近更改了我的模型,以便可以通过添加一个 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:0x007fe064700890 的未定义方法“用户”

基于这么少的信息有什么想法吗?

4

1 回答 1

1

在 ActionMailer 子类中,每个 mailer 操作在被调用时构造邮件消息的内部表示,以便 Rails 传递。在您的循环中,您只是一遍又一遍地重建相同的邮件消息,因此只有循环的最后一次迭代仍然存在 - 这就是 ActionMailer 的编写方式。

如果您想向多个收件人投递,您有以下几种选择:

  • 在调用邮件程序的地方使用循环 ( Mailer.new_message(...).deliver)
  • 在您的邮件中使用 To/CC/BCC 中的多个地址
于 2013-01-14T19:51:34.283 回答