向rails中的所有用户发送电子邮件

时间:2013-11-19 13:33:30

标签: ruby-on-rails-3 email

我正在尝试创建一种方法,在调用时向所有用户发送电子邮件。

我的最终目标是通过调度程序调用此方法(我已经让调度程序正常工作)并且该方法将考虑所有用户,并在满足某些先决条件的情况下向其中一些用户发送电子邮件。

现在我只是想了解我如何制作一个最简单的东西,即向桌面上的每个用户发送自定义电子邮件。

我的第一个问题是:

  def send_digest
    @users = User.all
    @users.each do |user|
      @time  = Time.now
      mail(to: user.email, subject: user.name)
    end
  end

此方法(位于app / mailer / user_mailer.rb内)仅发送一封电子邮件给表中ID最大的人。为什么?

另外,我需要做些什么来访问电子邮件中的变量“user.name”?

编辑: 有一种更好的方法来访问邮件正文中的用户变量而不是@user = user?

  def send_digest(user)
    @time  = Time.now
    @user = user
    mail(to: user.email, subject: 'mail message')
  end

1 个答案:

答案 0 :(得分:3)

对于每次调用邮件程序方法,都会发送一封电子邮件

在预定工作人员中

def calling_method
   @users.each do |user|
     send_digest(user.email, user.name)
   end
end
用户邮件中的

def send_digest(user_email, user_name)
   mail(to: user_email, subject: user_name)
end